芹菜工人不向rabbitmq发布消息?

时间:2015-07-28 13:51:23

标签: rabbitmq celery

我有一个设置,其中celery_result_backend已配置为'amqp'。我可以看到我的任务由日志中的工作人员执行。但 它正在创建具有任务ID的队列,但其状态已过期。我没有得到结果(result = AsyncResult(taskid); result.get()挂起)。我尝试了所有支持的支持: 1)Mysql:它没有将数据放到芹菜创建的表中 2)Redis:它没有将数据放到db

我是两个centos系统。 1)我正在调用延迟方法将任务发送到正确的rabbitmq。工作人员正在侦听队列,从那里它将选择任务和进程(我可以在队列中查看任务并由机器2中的工作人员执行但结果不会被放入后端。 )。我在做结果.get()它挂起。

2)工作人员正在运行它来执行任务。它执行任务但我认为无法重新执行任务

设定:

RABBITMQ_BROKER_HOST = '10.213.166.133'
RABBITMQ_BROKER_PORT = dqms_settings.RABBITMQ_BROKER_PORT
RABBITMQ_BROKER_VHOST = dqms_settings.RABBITMQ_BROKER_VHOST
RABBITMQ_BROKER_USERNAME = dqms_settings.RABBITMQ_BROKER_USERNAME
RABBITMQ_BROKER_PASSWORD = dqms_settings.RABBITMQ_BROKER_PASSWORD

BROKER_URL = 'amqp://%s:%s@%s:%s/%s' % (RABBITMQ_BROKER_USERNAME,
                                        RABBITMQ_BROKER_PASSWORD,
                                        RABBITMQ_BROKER_HOST,
                                        RABBITMQ_BROKER_PORT,
                                        RABBITMQ_BROKER_VHOST)

#CELERY_TASK_RESULT_EXPIRES = 18000
#CELERY_IGNORE_RESULT = True

CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
#CELERY_RESULT_BACKEND = 'db+mysql://svcacct-dqms:s3cretP@ssw0rd@10.213.166.202:3306/dqms'
#CELERY_RESULT_BACKEND = 'amqp'
#CELERY_AMQP_TASK_RESULT_EXPIRES = 1000 
#CELERY_RESULT_SERIALIZER = 'json'




CELERY_TIMEZONE = TIME_ZONE
CELERYD_PREFETCH_MULTIPLIER = dqms_settings.CELERYD_PREFETCH_MULTIPLIER

CELERY_DEFAULT_QUEUE = dqms_settings.CELERY_DEFAULT_QUEUE
CELERY_DEFAULT_EXCHANGE_TYPE = dqms_settings.CELERY_DEFAULT_EXCHANGE_TYPE
CELERY_DEFAULT_ROUTING_KEY = dqms_settings.CELERY_DEFAULT_ROUTING_KEY

CELERY_QUEUES = dqms_settings.CELERY_QUEUES
CELERY_ROUTES = dqms_settings.CELERY_ROUTES
CELERYD_HIJACK_ROOT_LOGGER = dqms_settings.CELERYD_HIJACK_ROOT_LOGGER
CELERY_ACKS_LATE = dqms_settings.CELERY_ACKS_LATE

CELERY_RESULT_BACKEND = 'redis://:s3cretP@ssw0rd@10.213.166.204:6379/5' #'djcelery.backends.database.DatabaseBackend'
#CELERY_REDIS_MAX_CONNECTIONS = 6
#CELERY_ALWAYS_EAGER = False

有人可以帮助为什么不将结果放入队列?

1 个答案:

答案 0 :(得分:0)

这是一个非常普遍的问题。 将CELERY_ALWAYS_EAGER设置为TRUE将完成工作 但是,这不是生产方案中的最佳解决方案。