2017-02-02 27 views
0

我卡住了。芹菜收到並刪除了未知消息。錯誤的目的地?!? - 連接到同一經紀人的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上的解決方案沒有幫助。請幫忙!

回答

0

刪除命令中的-Q選項。即

變化: celery -A myapp.celery worker -Q EU --loglevel=INFO --concurrency=6

celery -A myapp.celery worker EU --loglevel=INFO --concurrency=6

相關問題