我杀了芹菜里的跑动任务后,我正试着清理一些东西。我现在遇到了两个问题:
1)在任务撤销函数体中,如何访问调用任务函数的参数:例如,如果任务定义为:
@app.task()
def foo(bar, baz):
pass如何在bar代码中访问task_revoked.connect和baz?
( 2)我只想在任务状态不是X的情况下才终止它,这意味着一方面检查任务,另一方面设置状态。我想检查状态是可以的,但我很难在任务函数体内的上下文中找到答案。
如果我这样定义foo:
@app.task(bound=True)
def foo(self, bar, baz):
pass然后打电话说..。像foo(bar, baz)这样的烧瓶,然后我会得到第三个参数被期望的错误,这意味着装饰器不会通过self参数自动添加任何上下文。
该应用程序简单地定义为celery.Celery()。
提前感谢
发布于 2016-04-25 18:31:43
您可以从请求对象获取任务args。
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而不是bound。
@app.task(bind=True)
def foo(self, bar, baz):https://stackoverflow.com/questions/36844791
复制相似问题