草庐IT

celery_state

全部标签

Redis,SCAN 游标 "state management"是如何工作的?

Redis有一个SCAN命令,可用于迭代匹配模式等的键。RedisSCANdoc您首先将光标值设为0;每次调用都会返回一个新的游标值,您将其传递给下一次SCAN调用。值为0表示迭代已完成。假设不需要服务器或客户端状态(光标值除外)我想知道Redis如何实现扫描算法? 最佳答案 你可以在redis中找到答案dict.c源文件。那我就引用其中的一部分。迭代按以下方式工作:最初,您使用游标(v)值0调用该函数。2)该函数执行一步迭代,并返回您必须在下一次调用中使用的新游标值。当返回的游标为0时,迭代完成。该函数保证在迭代开始和结束之间返回

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,并在启动

ubuntu - 配置 Celery 以通过 Unix 套接字与 Redis 通信

我希望Celery在Redis而不是默认的RabbitMQ上构建。Celerydocumentation解释:Configurationiseasy,justconfigurethelocationofyourRedisdatabase:BROKER_URL='redis://localhost:6379/0'WheretheURLisintheformatof:redis://:password@hostname:port/db_numberallfieldsaftertheschemeareoptional,andwilldefaulttolocalhostonport6379,u

python - 在 Python 中设置 celery 任务后端的麻烦

我遵循了[http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html]中给出的所有步骤这是代码:from__future__importabsolute_importfromceleryimportCelery#app=Celery('tasks',broker='pyamqp://guest@localhost//')app=Celery('tasks',backend='redis://localhost',broker='pyamqp://guest@localhost/

python - celery 、Redis 和连接池

我最近在使用Celery和Redis时遇到了问题:我使用了过多的连接到我的云Redis帐户。我现在似乎已经通过更好的设置和更大的Redis计划解决了这个问题。但是,它引导我对Redis和Celery如何协同工作进行了一些实验,并且有一些我不明白的东西:由PythonRedis模块创建的RedisConnectionPool的数量。我将Celery配置为使用Redis作为代理和结果后端。这是我的celery配置:CELERY_TIMEZONE='Europe/Paris'CELERY_BROKER_URL=REDIS_URLCELERY_RESULT_BACKEND=REDIS_URLC

python - Django、 celery 、Redis、RabbitMQ : Chained Tasks for Fanout-On-Writes

我一直在看RickBranson的PyCon视频:MessagingatScaleatInstagram.您可能想观看视频来回答这个问题。RickBranson使用Celery、Redis和RabbitMQ。为了让你跟上速度,每个用户都有一个redis列表作为他们的主页。每个列表都包含他们关注的人发布的照片​​的媒体ID。例如,贾斯汀比伯拥有150万粉丝。当他发布一张照片时,该照片的ID需要插入到他的每个关注者的每个单独的redis列表中。这称为Fanout-On-Write方法。但是,这种方法存在一些可靠性问题。它可以工作,但对于像JustinBieber或LadyGaga这样拥有数