我已经将芹菜用于我的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。