0
我有,我安裝了RabbitMQ的經紀人和兩個芹菜消費者(main1.py和main2.py)都連接到同一代理服務器。芹菜任務
在第一消費者(main1.py),我實現發送多次在一個特定的隊列不同任務中的芹菜節拍:
app = Celery('tasks', broker=..., backend=...)
app.conf.task_routes = (
[
('tasks.beat', {'queue': 'print-queue'}),
],
)
app.conf.beat_schedule = {
'beat-every-10-seconds': {
'task': 'tasks.beat',
'schedule': 10.0
},
}
@app.task(name='tasks.beat', bind=True)
def beat(self):
for i in range(10):
app.send_task("tasks.print", args=[i], queue="print-queue")
return None
在第二消費者(main2.py ),我實現的任務上面說:
app = Celery('tasks', broker=..., backend=...)
app.conf.task_routes = (
[
('tasks.print', {'queue': 'print-queue'}),
],
)
@app.task(name='tasks.print', bind=True)
def print(self, name):
return name
當我開始兩個芹菜工人:
consumer1: celery worker -A main1 -Q print-queue --beat
consumer2: celery worker -A main2 -Q print-queue
我得到這些錯誤:在第二消費
[ERROR/MainProcess] Received unregistered task of type 'tasks.print'
第一消費
[ERROR/MainProcess] Received unregistered task of type 'tasks.beat'
是否可以工作在兩個連接到不同的芹菜應用拆分同一個經紀人?
在此先感謝!
感謝@mbattifarano,我完全明白你的意思。我使用兩個不同的隊列解決了這個問題,一個用於** tasks.beat **,另一個用於** tasks.print **。 – alauri