代码之家  ›  专栏  ›  技术社区  ›  Graham Slick

将芹菜任务从其他项目中排队

  •  0
  • Graham Slick  · 技术社区  · 6 年前

    我有一个项目使用芹菜来处理任务,还有一个项目是API,它可能需要将芹菜工人处理的任务排队。 然而,这两个项目是分开的,我不能在API中导入任务。

    我过去使用过Sidekiq——在Ruby中相当于芹菜——例如,如果使用相同的格式/负载,可以通过在Redis中存储来自其他语言/应用程序/进程的数据来推动工作。

    芹菜也可以做类似的事情吗?我找不到任何相关信息。

    0 回复  |  直到 6 年前
        1
  •  2
  •   user3778137 user3778137    6 年前

    是的,这在芹菜中是可能的 send_task signatures .假设 fetch_data 如果函数位于单独的代码库中,则可以使用以下方法之一调用它

    发送任务

    celery_app.send_task('fetch_data', kwargs={'url': request.json['url']})
    

    app.signature

    celery_app.signature('fetch_data', kwargs={'url': request.json['url']).delay()
    

    只需将函数名指定为字符串,无需将其导入代码库。

    您可以从以下网站了解更多详细信息: https://www.distributedpython.com/2018/06/19/call-celery-task-outside-codebase/