我的问题应该相当简单,与其说是需要拼命解决的问题,不如说是一个有趣的问题。Google无法提供我正在寻找的答案,因此我希望您的专业知识可以帮助我。我正在使用:Django1.4Celery2.5.5Redis2.4.10(latestversiononhomebrew?)我正在使用以下命令运行所有内容:redis-server/usr/local/etc/redis.confforemanrunpythonmanage.pyrunserverforemanrun"pythonmanage.pyceleryd-E-B--loglevel=INFO"foremanrunpythonmana
所以基本上我有一个相当复杂的工作流程,看起来类似于:>>>res=(add.si(2,2)|add.s(4)|add.s(8))()>>>res.get()16之后,沿着结果链向上走并收集所有单独的结果对我来说是相当微不足道的:>>>res.parent.get()8>>>res.parent.parent.get()4我的问题是,如果我的第三个任务取决于知道第一个任务的结果,但在这个例子中只收到第二个任务的结果怎么办?此外,链条很长,结果也不是那么小,因此仅将输入作为结果传递会不必要地污染结果存储。这是Redis,因此使用RabbitMQ、ZeroMQ时的限制不适用。
我使用以下步骤设置了rabbitmqserver并添加了用户:uruddarraju@*******:/usr/lib/rabbitmq/lib/rabbitmq_server-3.2.3$sudorabbitmqctllist_usersListingusers...guest[administrator]phantom[administrator]phantom1[]sudorabbitmqctlset_permissions-pphantomphantom1".*"".*"".*"uruddarraju@******:/usr/lib/rabbitmq/lib/rabbitmq_
我们正在运行以Redis作为代理后端的celery3.1.8。我们的配置非常简单,我们不关心结果,为此我们设置CELERY_IGNORE_RESULT=True但是我们注意到,我们的Redis代理实例占用大量内存(~3GB),而其中的队列和消息的实际数量在任何给定时刻都非常小。检查RDB文件后,我们注意到有几个巨大的列表:database,type,key,size_in_bytes,encoding,num_elements,len_largest_element0,list,"ed2d26b5-b8fb-3478-ace7-6714e8a7b4ed.reply.celery.pid
首先请不要将此问题视为thisquestion的重复我设置了一个使用celery和redis作为broker和result_backend的环境。我的问题是如何确保当celeryworker崩溃时,所有计划的任务都会在celeryworker恢复时重新尝试。我看到了关于使用CELERY_ACKS_LATE=True的建议,这样代理将重新驱动任务直到它获得ACK,但在我的情况下它不起作用。每当我安排一项任务时,它会立即转到工作人员,该工作人员将其坚持到预定的执行时间。让我举个例子:我正在安排这样的任务:res=test_task.apply_async(countdown=600),但是
我有2个自定义任务(TaskA和TaskB),它们都继承自celery.Task。调度程序时不时地启动TaskA,TaskA每次都启动N次TaskB,参数不同。但出于某种原因,有时具有相同参数的相同TaskB同时执行两次,这会导致数据库出现不同的问题。classTaskA(celery.Task):defrun(self,*args,**kwargs):objects=MyModel.objects.filter(processed=False)\.values_list('id',flat=True)task_b=TaskB()foroinobjects:o.apply_async(
我的一位Celery工作人员出现以下错误:2015-07-21T15:02:04.010066+00:00app[worker.1]:Traceback(mostrecentcalllast):2015-07-21T15:02:04.010069+00:00app[worker.1]:File"/app/.heroku/python/lib/python2.7/site-packages/celery/app/trace.py",line296,intrace_task2015-07-21T15:02:04.010070+00:00app[worker.1]:on_chord_part
我正在使用redis作为代理运行celery和celery花。一切正常启动,worker可以从redis找到作业,celeryworker成功完成作业。我遇到的问题是celeryflowerwebUI中的Broker选项卡不显示来自Redis的任何信息。我知道Redis网址是正确的,因为它与celeryd使用的网址相同。我也知道celery队列中有信息,因为我可以通过redis-cli手动确认。我想知道celeryflower是否试图在Broker选项卡中监控不同的队列?我在flower文档中没有看到任何设置可以覆盖或确认。我很乐意根据要求提供更多信息,但我不确定哪些是相关的。
有没有一种有效的方法可以通过RedisPub/Sub启动任务并返回任务的值返回到Pub/Subchannel以启动另一个任务根据结果?有人知道如何将它们组合在一起吗?也许装饰器是处理和准备返回值的好主意到Pub/Subchannel,而无需过多更改任务代码。非常感谢任何帮助! 最佳答案 使用pub/sub的问题在于它不是持久的。如果您希望进行更接近实时的通信,那么celery可能不是您的最佳选择。 关于python-通过RedisPub/Sub启动PythonCelery任务,我们在
我有一个部署到Heroku的Django应用程序,其中有一个运行celery的工作进程(+celerycam用于监控)。我使用RedisToGo的Redis数据库作为代理。我注意到Redis不断耗尽内存。这是我的procfile的样子:web:pythonapp/manage.pyrun_gunicorn-b"0.0.0.0:$PORT"-w3worker:pythonlipo/manage.pycelerycam&pythonapp/manage.pyceleryd-E-B--loglevel=INFO这是KEYS'*'的输出:“_kombu.binding.celeryd.pidb