您可以将poll() 结果赋值给变量,它的值将由lambda 返回
result = polling2.poll(lambda: requests.get('http://google.com').status_code == 200,
step=60,
poll_forever=True)
但在当前代码中 lambda 返回 True 和 result 将是 True 并且将无法访问 requests
但是您可以使用check_success= 以不同的方式编写它来测试状态
import requests
import polling
def test(response):
return response.status_code == 200
result = polling.poll(lambda: requests.get('http://google.com'),
step=60,
poll_forever=True,
check_success=test)
print(result.text)
现在lambda 返回response 和poll 将此response 发送到函数test 以检查status_code。如果test 将返回True,那么它会将response 分配给result,您可以使用.text、.content 或.json()
我在polling.py的源代码中找到了它
编辑:它展示了如何使用collect_value=。但是queue 获取除result 中的最后一个值之外的所有值。因此,它会收集状态与 200 不同的响应的结果(或错误消息,如果它们出现错误)。
import requests
import polling
import queue
def test(response):
return response.status_code == 200
my_queue = queue.Queue()
result = polling.poll(lambda: requests.get('http://google.com'),
step=60,
poll_forever=True,
check_success=test,
collect_value=my_queue)
if my_queue.empty():
print('empty')
else:
while not my_queue.empty():
print(my_queue.get())
#print(result.text)