我卡住了。芹菜收到並刪除了未知消息。錯誤的目的地?!? - 連接到同一經紀人的2臺服務器
我在不同的地點有2個VPS(一個EU,一個NA)。我有時需要在EU服務器上執行Celery任務,有時需要在NA服務器上執行(因爲網站根據位置顯示不同的信息)。
所以,在我的應用程序瓶我創建的做同樣的事情兩個不同的任務:
@celery.task(bind=True, name='task_EU')
def task_EU(self, arg1, arg2, arg3, arg4):
with app.app_context():
cust_module.handle(arg1, arg2, arg3, arg4)
@celery.task(bind=True, name='task_NA')
def task_NA(self, arg1, arg2, arg3, arg4):
with app.app_context():
cust_module.handle(arg1, arg2, arg3, arg4)
當從管理面板執行的操作這些任務被調用。根據什麼用戶有選擇,我想成爲服務器歐盟或服務器NA執行的任務,所以我這樣做:
@app.route('/launch-new-project', methods=['POST'])
def launch_new_project():
arg1 = request.form['arg1']
arg2 = request.form['arg2']
arg3 = request.form['arg3']
arg4 = request.form['arg4'] # EU or NA
# launch celery task
if arg4 == 'NA': # user selected 'NA' from drop-down menu
task = task_NA.apply_async((arg1, arg2, arg3, arg4), queue='NA')
else:
task = task_EU.apply_async((arg1, arg2, arg3, arg4), queue='EU')
return task.id, 202, {'location': url_for('taskstatus', task_id=task.id)}
在歐盟VPS,我將推出隊列,像這樣:
celery -A myapp.celery worker -Q EU --loglevel=INFO --concurrency=6
我的經紀人(我使用redis)在同一個VPS上運行,所以沒有問題連接到它。
不適用VPS命令是一樣的,也連接到EU VPS上的代理。
celery -A myapp.celery worker -Q NA --loglevel=INFO --concurrency=6
現在當我進入管理面板,並從下拉菜單中選擇EU時啓動項目 - >沒問題。該任務根據需要啓動。當我選擇NA,不過,我收到以下錯誤信息:
Received and deleted unknown message. Wrong destination?!?
然後我收到消息,這是相當神祕的全部內容,但它基本上包含了我的論點。我不知道如何調試,爲什麼它適用於歐盟而不是NA。
一直呆在這上幾天,SO上的解決方案沒有幫助。請幫忙!