我想使我的代码异步进行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()
我可以成功地将回调函数传递给请求,问题是如何将参数传递给该回调。
基本上,目标是执行回调函数传递的参数的方法。
答案 0 :(得分:1)
让我们做部分功能:
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)