[英]Connect two separate project through Celery
我有一個項目“ A” (Django),我想在其中生成要發送給Celery經紀人的消息,例如Redis 。
在另一個項目“ B” (同一台計算機上的純python)上,我想啟動一個Celery服務器工作程序,以監視代理中的消息並執行任務。 任務在B中定義。
任務完成后,它們會將結果保存在redis中(也用作結果后端)。
准備好響應后,我希望django知道。
這可能嗎?
我主要擔心的是A不應從B導入任務,因此我應該使用send_task('task_name')
。
在實踐中,我應該創建2個獨立的celery實例,但僅運行服務器工作程序?
這種架構正確嗎?或者我缺少什么?
這可能嗎?
您所要求的一切都是可能的,除了:
准備好響應后,我希望django知道。
芹菜響應存儲在redis中,並且django不會單獨通知。 您應該使用AsyncResult
輪詢結果,以了解任務是否完成以及結果如何。
實際上,您可以運行任意數量的芹菜工人。 celery的目的是允許您在所需的服務器和進程之間分配工作負載。 對於您的體系結構,是的,您只需要運行(最少)一名芹菜工人。
在生產者(django)中,使用以下代碼段實例化與Celery代理的連接:
from celery.app import Celery app = Celery(broker_url='redis://....') app.send_task(...)
在您的消費者(芹菜)中,按照芹菜文檔中的建議定義芹菜實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.