我试图传递这样的参数run_in_executor
:
loop.run_in_executor(None, update_contacts, data={
'email': email,
'access_token': g.tokens['access_token']
})
Run Code Online (Sandbox Code Playgroud)
但是,出现以下错误:
run_in_executor()获得了意外的关键字参数“数据”
是否有将args传递给此函数的通用方法?
使用functools.partial
; 这是执行此类操作的一种标准方法,特别是在的文档中loop.run_in_executor
以及在事件循环文档中更建议使用。
这是它的外观:
import functools # at the top with the other imports
loop.run_in_executor(None, functools.partial(update_contacts, data={
'email': email,
'access_token': g.tokens['access_token']
}))
Run Code Online (Sandbox Code Playgroud)
from functools import partial
如果愿意,您也可以这样做。
你要求一种“通用方式”;最通用的答案是您为此目的创建一个函数。如果data
您想提供的是调用者的本地函数,您可以在调用者内部创建该函数,可能是一个 lambda:
loop.run_in_executor(None,lambda: update_contacts(data={
'email': email,
'access_token': g.tokens['access_token']
})
Run Code Online (Sandbox Code Playgroud)
如上所述,这与functools.partial
答案没有太大区别,并且(如文档所述)它可能会降低调试输出的效用,但它可以让您执行诸如计算data
执行器上的值并根据update_contacts
.
归档时间: |
|
查看次数: |
1440 次 |
最近记录: |