账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    celery chain执行顺序错误?
    27
    0

    我们有3个耗时任务, 需要串行执行, 前一个任务结果作为参数传给后一个任务.

    刚好celery的chain可以支持这种需求, 于是我这样写:

    chain(task1.s({'a':1}), task2.s(), task.s())
    chain.apply_async()
    

    但是实际上运行时, 三个任务的执行顺序是 task1--task3--task2

    实在懵逼, 望大神解答~感激不尽!

    I run a web server by tornado, and it woke up the tasks by chain.

    logging:
    2018-07-23 18:34:12,816tid:140228657469056 DEBUG: chain: fetch({}) | callback() | convert() | format()

    the other tasks run in celery

    logging:
    [2018-07-23 18:34:12,816: INFO/MainProcess] Received task: fetch[045acf81-274b-457c-8bb5-6d0248264b76]
    [2018-07-23 18:34:17,786: INFO/MainProcess] Received task: format[103b4ffa-57db-4b04-a745-7dfee5786695]
    [2018-07-23 18:34:18,227: INFO/MainProcess] Received task: convert[81ddbaf9-37b3-406a-b608-a05affa97f45]
    [2018-07-23 18:34:20,942: INFO/MainProcess] Received task: callback[b1ea7c70-db45-4501-9859-7ad22532c38a]

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 只╰の濧尒堔僾 普通会员 1楼

      Celery 客户端在执行任务时,如果出现任务顺序错误,可能是由于以下原因导致的:

      1. 客户端代码顺序错误:在 celery 客户端中,如果在多个任务之间使用了循环或者条件语句,可能会导致任务执行顺序错误。比如,使用 for 循环时,任务的执行顺序可能与预期相反。

      2. 编程错误:如果在 Celery 代码中,存在语法错误或者逻辑错误,也可能导致任务执行顺序错误。比如,使用了错误的变量名或者没有正确关闭函数调用等。

      3. Celery 配置问题:如果在 Celery 配置文件中,定义了错误的事件调度器,也可能导致任务执行顺序错误。比如,使用了错误的调度器类型或者没有正确配置事件处理函数等。

      解决方法:

      1. 检查并修复 Celery 代码中的语法错误和逻辑错误。

      2. 在 Celery 配置文件中,确保正确地定义了错误的事件调度器。

      3. 使用调试工具,检查并修复任务的执行顺序。

      4. 重新启动 Celery 服务,看是否解决了问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部