Celery asyncResult.ready()始终在AWS

时间:2016-05-20 22:17:02

标签: django redis celery amazon-elastic-beanstalk amazon-elasticache

我已经将芹菜用于我的Django应用程序计算密集型任务。我使用Redis作为经纪人,以及Celery后端结果。 在localhost上一切正常。但是在Aws上,AsyncResult.ready()总是返回false。好像它没有维持任务的状态。

我为Redis提供了AWS Elasticache redis集群。而且我的Django应用程序的elasticbeanstalk。以下是我的代码片段:

    ares = AsyncResult(task_id)
    if(ares.ready()):
       return HttpResponse(ares.get())
    else:
       return HttpResponse(status=202)

这个'ares.ready()'总是在AWS上返回false,但在localhost上工作正常,使用本地redis-server

这是我在settings.py中的芹菜配置:

BROKER_URL = 'redis://interacta001.a4zxsx.0001.use1.cache.amazonaws.com:6379'

CELERY_RESULT_BACKEND = 'redis://interacta-001.a4zxsx.0001.use1.cache.amazonaws.com:6379'

CELERY_ACCEPT_CONTENT = ['application/json']

CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

CELERY_IMPORTS = ("ebdjango.tasks", )

注意:群集上的redis-server工作正常,当使用SSH从AMI(亚马逊机器)ping时,它会快速响应。我也在安装的应用程序中使用djcelery。

0 个答案:

没有答案