Questions tagged «celery»

Celery是用于Python的分布式任务队列框架,用于异步和并行执行。

2
为什么我们需要在像PostgreSQL这样的数据库上需要像RabbitMQ这样的消息代理?
我是RabbitMQ之类的消息代理的新手,我们可以使用它们为Celery这样的调度系统创建任务/消息队列。 现在,这是一个问题: 我可以在PostgreSQL中创建一个表,该表可以附加新任务,并由用户程序(如Celery)使用。 为什么在地球上我想为此设置一种全新技术,例如RabbitMQ? 现在,我相信扩展无法解决问题,因为像PostgreSQL这样的数据库可以在分布式环境中工作。 我搜索了数据库针对特定问题带来的问题,然后发现: 轮询使数据库繁忙且性能低下 锁定表->再次表现不佳 数百万行的任务->再次,轮询性能低下 现在,RabbitMQ或类似的任何其他消息代理如何解决这些问题? 另外,我发现该AMQP协议是遵循的。那有什么好呢? 可以Redis的也可以用作消息代理?我发现它比RabbitMQ更类似于Memcached。 请对此有所说明!




2
使用Celery vs. RQ的利弊[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 改善这个问题 目前,我正在处理需要实施一些后台作业(主要用于电子邮件发送和大量数据库更新)的python项目。我将Redis用于任务代理。因此,在这一点上,我有两个候选人:Celery和RQ。我对这些工作队列有一定的经验,但我想请大家分享使用此工具的经验。所以。 使用Celery vs.RQ有什么优缺点。 适合使用Celery vs. RQ的项目/任务的任何示例。 Celery看起来很复杂,但是它是功能齐全的解决方案。实际上,我认为我不需要所有这些功能。从另一方面讲,RQ非常简单(例如,配置,集成),但是它似乎缺少一些有用的功能(例如,任务吊销,代码自动重载)

30
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// …
96 python  celery 

1
分布式任务队列(例如Celery)与crontab脚本
我在理解“分布式任务队列”的目的时遇到了麻烦。例如,python的celery库。 我知道在celery(Python框架)中,您可以为要执行的功能设置定时窗口。但是,这也可以在针对python脚本的linux crontab中轻松完成。 据我所知,并通过我自己的django-celery网络应用显示,celery消耗的内存要比设置原始crontab多得多。对于相对较小的应用程序,相差几百MB。 有人可以帮我这个区别吗?总体上讲,关于任务队列/ crontabs如何工作的高级解释也许也不错。 谢谢。
92 python  django  celery 

13
如何在Celery中检查任务状态?
如何检查一项任务是否在celery中运行(特别是我正在使用celery-django)? 我已经阅读了文档,并且已经在google上搜索了,但是看不到像这样的呼叫: my_example_task.state() == RUNNING 我的用例是我有一个外部(java)服务来进行代码转换。当我发送要进行代码转换的文档时,我想检查运行该服务的任务是否正在运行,如果没有运行,请(重新)启动它。 我相信我使用的是当前的稳定版本-2.4。

5
取消Celery已经执行的任务?
我一直在阅读文档并进行搜索,但似乎找不到直接的答案: 您可以取消已经执行的任务吗?(由于任务已开始,需要一段时间,因此需要取消一半) 我在Celery FAQ的文档中找到了这个 >>> result = add.apply_async(args=[2, 2], countdown=120) >>> result.revoke() 但是我不清楚这是否会取消排队的任务,或者是否会杀死工作程序上正在运行的进程。感谢您能摆脱的光芒!

6
使用django-celery进行单元测试?
我正在为我们的django-celery项目想出一种测试方法。我已经阅读了文档中的注释,但是并没有使我对实际操作有个好主意。我并不担心在实际的守护进程测试任务,只是功能我的代码。我主要是想知道: task.delay()在测试过程中我们如何绕过(我尝试设置,CELERY_ALWAYS_EAGER = True但没有影响)? 在不实际更改settings.py的情况下,我们如何使用建议的测试设置(如果这是最好的方法)? 我们仍然可以使用manage.py test还是必须使用自定义运行器? 总体而言,有关芹菜测试的任何提示或技巧都将非常有帮助。

5
了解芹菜任务预取
我刚刚发现了有关配置选项CELERYD_PREFETCH_MULTIPLIER(docs)的信息。默认值为4,但是(我相信)我希望预取尽可能少。我现在将其设置为1,这已经足够接近我要查找的内容,但是仍然有些我不了解的事情: 为什么这样预取一个好主意?我并没有真正找到原因,除非消息队列和工作线程之间存在大量延迟(就我而言,它们当前正在同一主机上运行,​​最糟糕的是最终可能在同一数据中的不同主机上运行)中央)。该文档仅提到了缺点,但没有解释优点是什么。 许多人似乎将此设置为0,期望能够以这种方式关闭预取功能(我认为这是一个合理的假设)。但是,0表示无限的预取。为什么有人会想要无限的预取,而这并不能完全消除您最初为任务队列引入的并发/异步性呢? 为什么不能关闭预取?在大多数情况下,关闭性能可能不是一个好主意,但是有没有技术上的理由无法做到这一点?还是只是没有实施? 有时,此选项连接到CELERY_ACKS_LATE。例如。罗杰·胡(Roger Hu)写道«[…]通常,[用户]真正想要的是让一个工人只保留与子进程一样多的任务。但是,如果不启用较晚的确认,这是不可能的。可以在这里找到有关连接的另一个提示。有人可以解释为什么两个选项连接在一起吗?
79 python  celery  celeryd 

4
具有多处理功能的Celery并行分布式任务
我有一个CPU密集的Celery任务。我想使用许多EC2实例上的所有处理能力(核心)来更快地完成此工作(我认为是具有多处理功能的芹菜并行分布式任务)。 我想更好地理解所有术语,线程,多处理,分布式计算,分布式并行处理。 示例任务: @app.task for item in list_of_millions_of_ids: id = item # do some long complicated equation here very CPU heavy!!!!!!! database.objects(newid=id).save() 使用上面的代码(如果可能,还提供一个示例),如何通过Celery使用一项计算任务来拆分这项任务?


2
为什么用芹菜代替RabbitMQ?
据我了解,Celery是一个分布式任务队列,这意味着它唯一要做的就是将任务/作业分派给其他服务器并返回结果。RabbitMQ是一个消息队列,仅此而已。但是,当收到消息时,工作人员可以只听MQ并执行任务。这恰好实现了Celery所提供的功能,那么为什么根本需要Celery?

3
Celery-获取当前任务的任务ID
如何从任务中获取任务的task_id值?这是我的代码: from celery.decorators import task from django.core.cache import cache @task def do_job(path): "Performs an operation on a file" # ... Code to perform the operation ... cache.set(current_task_id, operation_results) 这个想法是,当我创建任务的新实例时,我task_id从任务对象中检索。然后,我使用任务ID来确定任务是否已完成。我不想按path值跟踪任务,因为文件在任务完成后被“清理”,并且可能存在也可能不存在。 在上面的示例中,我将如何获取值current_task_id?
77 python  django  celery 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.