如何在Python中将参数传递给回调函数?

时间:2019-05-16 19:52:00

标签: python http

我想使我的代码异步进行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()

我可以成功地将回调函数传递给请求,问题是如何将参数传递给该回调。

基本上,目标是执行回调函数传递的参数的方法。

1 个答案:

答案 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)