芹菜+;Python,如何从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

当我在芹菜里干掉一个正在运行的任务后,我正试图清理一些东西。我目前遇到两个问题:

1) 在task Reversed函数体内,如何访问调用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看起来你的代码中有输入错误,请检查更新的答案。事实上是这样的。多谢了,伙计,我不会抓到那个的