芹菜+;Python,如何从task函数访问任务参数?
当我在芹菜里干掉一个正在运行的任务后,我正试图清理一些东西。我目前遇到两个问题: 1) 在task Reversed函数体内,如何访问调用task函数的参数:例如,如果任务定义为:芹菜+;Python,如何从task函数访问任务参数?,python,asynchronous,celery,Python,Asynchronous,Celery,当我在芹菜里干掉一个正在运行的任务后,我正试图清理一些东西。我目前遇到两个问题: 1) 在task Reversed函数体内,如何访问调用task函数的参数:例如,如果任务定义为: @app.task() def foo(bar, baz): pass 如何访问任务中的栏和baz。连接code 2) 我只想在任务的状态不是X的情况下终止任务。这意味着一方面检查任务,另一方面设置状态。我想检查状态是可以完成的,但是我很难理解任务函数体中的上下文 如果我这样定义foo: @app.task
@app.task()
def foo(bar, baz):
pass
如何访问任务中的栏
和baz
。连接code
2) 我只想在任务的状态不是X的情况下终止任务。这意味着一方面检查任务,另一方面设置状态。我想检查状态是可以完成的,但是我很难理解任务函数体中的上下文
如果我这样定义foo:
@app.task(bound=True)
def foo(self, bar, baz):
pass
从…开始叫它。。。。类似于foo(bar,baz)
,那么我将得到一个错误,第三个参数是预期的,这意味着装饰程序不会通过self参数自动添加任何上下文
该应用程序仅定义为cellery.cellery()
提前感谢您可以从请求对象获取任务参数
from celery.signals import task_revoked
@task_revoked.connect
def my_task_revoked_handler(sender=None, body=None, *args, **kwargs):
print(kwargs['request'].args)
这将打印给定给任务的参数
更新:
您必须使用bind
而不是bind
@app.task(bind=True)
def foo(self, bar, baz):
您可以从请求对象获取任务参数
from celery.signals import task_revoked
@task_revoked.connect
def my_task_revoked_handler(sender=None, body=None, *args, **kwargs):
print(kwargs['request'].args)
这将打印给定给任务的参数
更新:
您必须使用bind
而不是bind
@app.task(bind=True)
def foo(self, bar, baz):
问题是芹菜文档显示了某种类型的类交互,但是没有给出更多的细节。如果我试图将我的函数推到一个类中并调用它们,self就不会有状态参数,这表明decorator没有添加任何东西extra@omu_negru看起来你的代码中有输入错误,请检查更新的答案。事实上是这样的。多谢了,伙计,我不会抓到那个东西的。芹菜文档显示了一些类交互,但是除了那个以外,没有给出更多的细节:。如果我试图将我的函数推到一个类中并调用它们,self就不会有状态参数,这表明decorator没有添加任何东西extra@omu_negru看起来你的代码中有输入错误,请检查更新的答案。事实上是这样的。多谢了,伙计,我不会抓到那个的