簡體   English   中英

在同一台服務器上運行多個芹菜實例

[英]Running multiple instances of celery on the same server

我想在同一台機器上運行兩個芹菜實例。 一個是我的應用程序的'A'版本,另一個是'B'版本。

我有兩個實例,我這樣開始:

(env1)/home/me/firstapp$ celery -A app.tasks worker --config celeryconfig
(env2)/home/me/secondapp$ celery -A app.tasks worker -n Carrot --config celeryconfig

在每個應用程序的tasks.py中,我創建一個像這樣的芹菜實例:

 celery = Celery('tasks', backend='amqp', broker='amqp://guest@127.0.0..1.5672//')
 @celery.task
 def run_a_task():
     do_stuff()

在env2的task.py中,如何指定我想使用secondapp(名為Carrot)中的第二個celery實例,而不是第一個來自firstapp的芹菜實例? 我懷疑我需要在第一行的celery構造函數中更改一些內容,但我不知道要添加什么。

我通過使用芹菜的虛擬主機來解決這個問題。

一旦rabbitmq服務器運行,我發出以下命令:

rabbitmqctl add_user user password
rabbitmqctl add_vhost app2
rabbitmqctl set_permissions -p app2 user ".*" ".*" ".*"

然后我開始芹菜:

celery -A tasks worker --broker=amqp://user:password@localhost/app2

有了我的任務,我就像這樣初始化芹菜對象:

celery = Celery('tasks', backend='amqp', broker='amqp://user:password@localhost:5672/app2

看起來你正在使用AMQP所以我建議使用不同的交換來解決這個問題。

我建議閱讀關於AMQP結構的博客文章: http//blogs.digitar.com/jjww/? s =rabbits&x = 0&y = 0

有關Celery的具體信息,請查看此處: http//docs.celeryproject.org/en/latest/userguide/routing.html

您可以執行的簡短版本是為應用程序提供不同的默認隊列:

from kombu import Exchange, Queue

CELERY_DEFAULT_QUEUE = 'app1'
CELERY_QUEUES = (
    Queue('app1', Exchange('app1'), routing_key='app1'),
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM