从其他项目排队芹菜任务

Enqueue celery task from other project

我有一个项目使用 celery 来处理任务,第二个项目是 API 可能需要将任务排队以由 celery worker 处理。 但是,这 2 个项目是分开的,我无法在 API 中导入任务。

我在过去使用过 Sidekiq——Celery 在 Ruby 中的等价物,例如,如果使用相同的 languages/apps/processes,可以通过将数据存储在 Redis 中来推送作业 languages/apps/processes =17=].

Celery 有类似的功能吗?我找不到任何相关内容。

是的,这在 celery 中使用 send_tasksignatures 是可能的。假设 fetch_data 是单独代码库中的函数,您可以使用以下方法之一调用它

send_task

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/

中更详细地了解这一点