繁体   English   中英

如何使用bind = True从任务中创建一个组?

How to make a group from tasks with bind = True?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

bind=True任务

我有一个运行持续几秒钟的计算的芹菜任务。

from celery import states

@celery.task(name="crunch.task", bind=True)
def crunch(self, data):
    try:
        pass
        # ... run computation with data here
    except Exception as exc:
        self.update_state(
            state=states.FAILURE,
            meta={"details": "error details here"}
        )
        raise exc

这里的重要功能是我使用bind=True将任务作为self参数传递给函数。 这允许访问任务的update_state方法,这对于错误处理非常update_state

小组作业

我现在想使用celery.group在批处理作业中运行此任务。

@celery.task(name="batch.task", bind=True)
def batch(self, data_list):
    try:
        # HERE! IT SEEM WRONG TO PASS `SELF` INTO THE CHILD TASKS
        job = group([crunch(self, data) for data in data_list])  # <-- here `self` should be created by celery!
        job.async_apply()
    except Exception as exc:
        self.update_state(
            state=states.FAILURE,
            meta={"details": "error details here"}
        )
        raise exc

如何使用bind=True celery.group由任务组成的celery.group

1 个回复

你需要处理签名,

crunch.si(data)
5 如何使用bind()创建隐私

我将对象文字传递到称为supportP()的框架方法中。 该对象文字有一个称为_p的特殊属性,表示它的成员是私有的。 从对象文字中的with可以通过this._p访问。 但是,当我将对象文字传递到“外部”范围时,我不会复制_p 。 现在已通过遗漏将其私有化。 为了从公共成员方法访问_p ...

6 仅启动组中的第一个任务

我发现了一个类似的问题,但没有答案。 我正在创建一group要并行运行的四个任务。 但由于某种原因,只执行了第一个任务。 操作系统 - Windows X ...

7 使用bind()创建一个带Lua Socket的服务器

使用LuaSocket ,此代码有效: 但是这段代码失败了: 然而, TCP绑定的文档意味着后者应该工作,说明: “注意:函数socket.bind可用,是创建服务器套接字的快捷方式。” 如何将通用“主”对象转换为服务器? 这样做的动机是希望在绑定操作本 ...

9 Django-celery在一个任务中运行一组任务

我没有设法在由rest调用启动的任务本身内的组中运行任务列表。 这是我想要做的,我删除了无用的东西: 该代码有效,但是所有task_one都一个接一个地运行,而组应并行运行。 但如果调用multiple_tasks没有.delay在run_some_tasks任务并行组内按预 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM