首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Celery+Python中,如何从task_revoked函数访问任务参数?

在Celery+Python中,如何从task_revoked函数访问任务参数?
EN

Stack Overflow用户
提问于 2016-04-25 15:23:55
回答 1查看 1.1K关注 0票数 0

我杀了芹菜里的跑动任务后,我正试着清理一些东西。我现在遇到了两个问题:

1)在任务撤销函数体中,如何访问调用任务函数的参数:例如,如果任务定义为:

代码语言:javascript
复制
@app.task()
def foo(bar, baz):
    pass

如何在bar代码中访问task_revoked.connectbaz

( 2)我只想在任务状态不是X的情况下才终止它,这意味着一方面检查任务,另一方面设置状态。我想检查状态是可以的,但我很难在任务函数体内的上下文中找到答案。

如果我这样定义foo:

代码语言:javascript
复制
@app.task(bound=True)
def foo(self, bar, baz):
    pass

然后打电话说..。像foo(bar, baz)这样的烧瓶,然后我会得到第三个参数被期望的错误,这意味着装饰器不会通过self参数自动添加任何上下文。

该应用程序简单地定义为celery.Celery()

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-25 18:31:43

您可以从请求对象获取任务args。

代码语言:javascript
复制
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

代码语言:javascript
复制
@app.task(bind=True)
def foo(self, bar, baz):
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36844791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档