草庐IT

celery_worker

全部标签

ruby - 如何在启动时自动创建一个 resque worker?

好的,我正在制作我的第一个ruby​​应用程序。谁知道将所有内容都转移到“生产”中是如此复杂。到目前为止,我一直在努力配置passenger,让它在启动时运行,然后让redis在启动时运行。我的最后一个任务是在启动时添加1个worker。现在,我必须通过ssh登录并运行我的rake命令rakeworkers:start。显然,当我想关闭ssh时,这并不好。所以我真的不知道下一步该怎么做或做什么。我尝试将resque默认配置复制到config.ru,但它只会让Passenger出错。我还研究了一些人提到的resque-pool,但这超出了我的理解范围。我所要做的就是在启动时添加1个wor

python - 由于回复 pidboxes,Redis 在用作 Celery 代理时会占用大量内存

我们正在运行以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

redis - 在 celery 中,如何确保在工作人员崩溃时重试任务

首先请不要将此问题视为thisquestion的重复我设置了一个使用celery和redis作为broker和result_backend的环境。我的问题是如何确保当celeryworker崩溃时,所有计划的任务都会在celeryworker恢复时重新尝试。我看到了关于使用CELERY_ACKS_LATE=True的建议,这样代理将重新驱动任务直到它获得ACK,但在我的情况下它不起作用。每当我安排一项任务时,它会立即转到工作人员,该工作人员将其坚持到预定的执行时间。让我举个例子:我正在安排这样的任务:res=test_task.apply_async(countdown=600),但是

python - Celery/Redis 同一任务并行执行多次

我有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(

python - Redis 和 Celery 的奇怪错误

我的一位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

python - Celery flower 的 Broker 选项卡是空白的

我正在使用redis作为代理运行celery和celery花。一切正常启动,worker可以从redis找到作业,celeryworker成功完成作业。我遇到的问题是celeryflowerwebUI中的Broker选项卡不显示来自Redis的任何信息。我知道Redis网址是正确的,因为它与celeryd使用的网址相同。我也知道celery队列中有信息,因为我可以通过redis-cli手动确认。我想知道celeryflower是否试图在Broker选项卡中监控不同的队列?我在flower文档中没有看到任何设置可以覆盖或确认。我很乐意根据要求提供更多信息,但我不确定哪些是相关的。

python - 通过 Redis Pub/Sub 启动 Python Celery 任务

有没有一种有效的方法可以通过RedisPub/Sub启动任务并返回任务的值返回到Pub/Subchannel以启动另一个任务根据结果​​?有人知道如何将它们组合在一起吗?也许装饰器是处理和准备返回值的好主意到Pub/Subchannel,而无需过多更改任务代码。非常感谢任何帮助! 最佳答案 使用pub/sub的问题在于它不是持久的。如果您希望进行更接近实时的通信,那么celery可能不是您的最佳选择。 关于python-通过RedisPub/Sub启动PythonCelery任务,我们在

django - Celery 和 Redis 不断耗尽内存

我有一个部署到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

redis - 使用 django-celery chord,celery.chord_unlock 一直在执行,不调用提供的回调

我正在使用DjangoCelery和Redis来运行一些这样的任务:header=[tasks.invalidate_user.subtask(args=(user)),tasks.invalidate_details.subtask(args=(user))]callback=tasks.rebuild.subtask()chord(header)(callback)所以与documentation中所述基本相同.我的问题是,当调用此任务chord时,celery.chord_unlock任务一直在重试。header中的任务成功完成,但由于chord_unlock从未完成,因此永远不

python - 使用带有 Redis 后端的 Celery 的多个安装

是否可以将同一个redis数据库用于多个使用celery的项目?就像使用键前缀将多个项目的同一个数据库用作缓存一样。还是我必须为每个安装使用单独的数据库? 最佳答案 总结这篇有用的博文:http://kfalck.net/2013/02/21/run-multiple-celeries-on-a-single-redis为每个项目指定不同的数据库编号,例如redis://localhost/0和redis://localhost/1为不同的项目定义和使用不同的队列名称。在任务端,定义CELERY_DEFAULT_QUEUE,并在启动