标签: celery

为什么我们需要像PostMSQL这样的数据库上的RabbitMQ等消息代理?

我是RabbitMQ等消息代理的新手,我们可以使用它来为Celery等调度系统创建任务/消息队列.

现在,问题是:

  • 我可以在PostgreSQL中创建一个表,它可以附加新任务并由Celery等消费者程序使用.

  • 为什么我想为RabbitMQ设置一个全新的技术?

现在,我认为扩展不能成为答案,因为像PostgreSQL这样的数据库可以在分布式环境中工作.

我搜索了数据库为特定问题提出的问题,我发现:

  • 轮询使数据库忙碌且性能低下
  • 锁定表 - >再次表现不佳
  • 数百万行任务 - >再次轮询是低性能的

现在,RabbitMQ或任何其他类似的消息代理如何解决这些问题?

此外,我发现AMQP协议是它所遵循的.那有什么好处的?

可以Redis的也可以用作消息代理?我发现它更类似于memcache然后是RabbitMQ.

请注意这个!

postgresql message-queue rabbitmq redis celery

196
推荐指数
2
解决办法
4万
查看次数

删除celery/rabbitmq中的所有待处理任务

如何在不知道task_id每个任务的情况下删除所有待处理任务?

task rabbitmq celery celery-task

178
推荐指数
8
解决办法
10万
查看次数

检索Celery中队列中的任务列表

如何检索队列中尚未处理的任务列表?

python celery

136
推荐指数
10
解决办法
10万
查看次数

你如何对Celery任务进行单元测试?

Celery文档提到在Django中测试Celery,但如果你没有使用Django,则没有解释如何测试Celery任务.你怎么做到这一点?

python unit-testing celery

96
推荐指数
9
解决办法
4万
查看次数

分布式任务队列(例如Celery)与crontab脚本

我无法理解"分布式任务队列"的用途.例如,python的芹菜库.

我知道在celery,python框架中,你可以设置定时窗口来执行函数.但是,这也可以在针对python脚本的linux crontab中轻松完成.

据我所知,并且从我自己的django-celery webapps中显示,芹菜消耗的RAM内存比设置原始crontab要多得多.一个相对较小的应用程序几百MB差异.

有人可以帮助我这个区别吗?也许对任务队列/ crontabs如何工作的高级解释也很好.

谢谢.

python django celery

87
推荐指数
1
解决办法
1万
查看次数

使用Celery与RQ的利弊

目前我正在研究需要实现一些后台工作的python项目(主要用于电子邮件发送和大量数据库更新).我使用Redis作为任务经纪人.所以在这一点上我有两个候选人:CeleryRQ.我对这些工作队伍有一些经验,但我想请大家分享一下使用这些工具的经验.所以.

  1. 使用Celery与RQ有什么利弊.
  2. 任何适合使用Celery与RQ的项目/任务示例.

芹菜看起来很复杂,但它是全功能的解决方案.实际上我认为我不需要所有这些功能.从另一方面来看,RQ非常简单(例如配置,集成),但它似乎缺少一些有用的功能(例如任务撤销,代码自动重新加载)

python scheduled-tasks redis celery python-rq

86
推荐指数
1
解决办法
2万
查看次数

如何在Celery中检查任务状态?

如何检查任务是否在芹菜中运行(具体来说,我使用的是celery-django)?

我已经阅读了文档,而且我用谷歌搜索了,但我看不到像这样的电话:

my_example_task.state() == RUNNING
Run Code Online (Sandbox Code Playgroud)

我的用例是我有一个用于转码的外部(java)服务.当我发送要转码的文档时,我想检查运行该服务的任务是否正在运行,如果没有,则(重新)启动它.

我正在使用目前的稳定版本 - 2.4,我相信.

python web-services celery django-celery

85
推荐指数
7
解决办法
9万
查看次数

用Celery取消已执行的任务?

我一直在阅读文档和搜索,但似乎无法找到一个直接的答案:

你能取消已经执行的任务吗?(在任务开始时,需要一段时间,需要取消一半)

我在Celery FAQ的文档中找到了这个

>>> result = add.apply_async(args=[2, 2], countdown=120)
>>> result.revoke()
Run Code Online (Sandbox Code Playgroud)

但我不清楚这是否会取消排队的任务,或者它是否会杀死一个正在运行的进程.感谢您可以放下任何光线!

python django message-passing celery

84
推荐指数
6
解决办法
7万
查看次数

Celery收到未注册的类型任务(运行示例)

我正试图从Celery文档中运行示例.

我跑: celeryd --loglevel=INFO

/usr/local/lib/python2.7/dist-packages/celery/loaders/default.py:64: NotConfigured: No 'celeryconfig' module found! Please make sure it exists and is available to Python.
  "is available to Python." % (configname, )))
[2012-03-19 04:26:34,899: WARNING/MainProcess]  

 -------------- celery@ubuntu v2.5.1
---- **** -----
--- * ***  * -- [Configuration]
-- * - **** ---   . broker:      amqp://guest@localhost:5672//
- ** ----------   . loader:      celery.loaders.default.Loader
- ** ----------   . logfile:     [stderr]@INFO
- ** ----------   . concurrency: 4
- ** ----------   . events:      OFF
- *** --- * …
Run Code Online (Sandbox Code Playgroud)

python celery

81
推荐指数
12
解决办法
8万
查看次数

使用django-芹菜进行单元测试?

我正在尝试为我们的django-celery项目提出测试方法.我已经阅读了文档中的注释,但它并没有让我对实际操作有什么了解.我并不担心测试实际守护进程中的任务,只是我的代码的功能.主要是我想知道:

  1. 我们如何task.delay()在测试期间绕过(我尝试过设置,CELERY_ALWAYS_EAGER = True但没有区别)?
  2. 我们如何在不实际更改settings.py的情况下使用推荐的测试设置(如果这是最佳方式)?
  3. 我们还可以使用manage.py test或者我们必须使用自定义跑步者吗?

总的来说,使用芹菜进行测试的任何提示或技巧都会非常有用.

python django unit-testing celery

79
推荐指数
3
解决办法
2万
查看次数