Celery收到并删除了未知消息.错误的目的地?!?-2台服务器连接到同一个代理



我被卡住了。

我在不同的地方有两个VPS(一个欧盟,一个北美)。我有时需要在欧盟服务器上执行Celery任务,有时需要在NA服务器上执行(因为网站根据位置显示不同的信息)。

因此,在我的Flask应用程序中,我创建了两个不同的任务,它们做着相同的事情:

@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)

当从管理面板执行操作时,会调用这些任务。根据用户的选择,我希望任务在服务器EU或服务器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上运行,所以连接到它没有问题

NA VPS命令是相同的,也连接到欧盟VPS上的代理。

celery -A myapp.celery worker -Q NA --loglevel=INFO --concurrency=6

现在,当我转到管理面板,启动一个项目,同时从下拉菜单中选择欧盟->没有问题。任务根据需要启动。然而,当我选择NA时,我会收到以下错误消息:

Received and deleted unknown message. Wrong destination?!?

然后我收到了消息的全部内容,这很神秘,但它基本上包含了我的论点。我不知道如何调试这个,为什么它在欧盟而不是NA上有效。

在这个问题上坚持了好几天,SO上的解决方案没有帮助。请帮忙!

删除命令中的-Q选项。即

更改: celery -A myapp.celery worker -Q EU --loglevel=INFO --concurrency=6

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

相关内容

  • 没有找到相关文章

最新更新