我有一个使用celery处理任务的项目,还有另一个项目,这是一个API,可能需要排队将芹菜工人处理的任务。 但是,这两个项目是分开的,我无法将任务导入API之一。
过去我曾经使用Sidekiq(相当于Celery在Ruby中的等效语言),例如,如果使用相同的格式/有效负载,则可以通过将Redd数据存储在其他语言/应用/进程中来推送任务。 >
芹菜有可能发生类似的事情吗?我找不到任何相关的东西。
答案 0 :(得分:1)
是的,在芹菜中使用send_task
或signatures
可以做到这一点。假设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/
详细了解