我正在使用rabbitMQ在位于世界其他地方的远程主机中启动进程。例如,RabbitMQ在俄勒冈主机上运行,它接收客户端消息以启动爱尔兰和加利福尼亚的流程。
大多数情况下,进程都会启动,当它们完成时,rabbitMQ会将输出返回给客户端。但是,有时候,作业成功完成,但是RabbitMQ没有将输出返回给客户端,并且客户端一直在等待响应。这些过程可能需要10分钟才能执行,因此客户端会等待响应10分钟。
我使用celery
连接到rabbitMQ,客户端调用使用task.get()
进行阻止。换句话说,客户端会挂起,直到收到其呼叫的响应。我想了解为什么客户端在工作完成后没有得到响应。我该如何调试此问题?
这是我的celeryconfig.py
import os
import sys
# add hadoop python to the env, just for the running
sys.path.append(os.path.dirname(os.path.basename(__file__)))
# broker configuration
# medusa-rabbitmq is the name of the hosts where rabbitmq is running
BROKER_URL = "amqp://celeryuser:celery@medusa-rabbitmq/celeryvhost"
CELERY_RESULT_BACKEND = "amqp"
TEST_RUNNER = 'celery.contrib.test_runner.run_tests'
# for debug
# CELERY_ALWAYS_EAGER = True
# module loaded
CELERY_IMPORTS = ("medusa.mergedirs", "medusa.medusasystem",
"medusa.utility", "medusa.pingdaemon", "medusa.hdfs", "medusa.vote.voting")