我想让我的代码对于 HTTP 调用异步,因为整个程序在调用时停止。
我查看了 grequests,但无法弄清楚,asyncio 也是如此
这是代码的当前同步版本:
myvar1 = class_object()
response = requests.get(myvar1.url)
if response.status_code == 200:
myvar1.accept()
我想改为执行以下操作:
def myfunction:
request.get(myvar1.url,callbackfunction(response,myvar1))
return None
def callbackfunction(response,myvar1):
if response.status_code == 200:
myvar1.accept()
我可以成功地将回调函数传递给请求,问题是如何将参数传递给该回调。
基本上,目标是执行回调函数传递的参数的方法。
让我们制作一个部分函数:
def myfunction(var, func):
request.get(var.url, callback = func)
def callbackfunction(response, var):
if response.status_code == 200:
var.accept()
# Now make a partial function to wrap callbackfunction
def wrapper(var):
def callback(response):
callbackfunction(response, var)
return callback
myvar1 = class_object()
myfunction(myvar1, wrapper(myvar1))
因此,
requests.get()
最终将调用func(response)
,实际上将是callback(response)
,它调用callbackfunction(response, myvar1)