草庐IT

python - celery 不返回结果

出于某种原因,每当我在Celery中创建并运行新任务时,都会出现返回结果的问题。第一个任务完美返回,但对于所有后续任务,结果始终未决。我检查了Celery日志,它得到了正确的结果,没有错误,但就是无法返回。如果有帮助,我正在运行rabbitmq作为我的后端。 最佳答案 好吧,事实证明我只需要明确指定一个后端。添加:CELERY_RESULT_BACKEND="amqp"我的设置文件似乎解决了所有问题。 关于python-celery不返回结果,我们在StackOverflow上找到一个类

python - celery 卡在 mingle : searching for neighbors, 没有进入就绪状态

我曾使用10个线程为我的项目运行celery。它工作得很好。现在,当我使用命令时:celery-Atasksworker--loglevel=info--concurrency10celery卡在:[2014-08-0712:55:21,013:INFO/MainProcess]Connectedtoamqp://guest:**@127.0.0.1:5672//[2014-08-0712:55:21,025:INFO/MainProcess]mingle:searchingforneighbors早些时候它显示就绪状态。当我尝试使用ctrl+c结束它时,它没有关闭。[2014-08-

python - celery 可以分配任务以指定 worker

Celery会发送任务给空闲的worker。我有一个任务每5秒运行一次,我希望这个任务只发送给一个指定的工作人员。其他任务可以共享剩下的workercelery可以这样做吗??我想知道这个参数是什么:CELERY_TASK_RESULT_EXPIRES是不是表示任务不会发给队列中的某个worker?或者如果运行时间太长它会停止任务吗? 最佳答案 当然可以。最好的方法是使用不同的队列将celeryworker分开。您只需要确保您需要的任务进入单独的队列,并且您的工作人员正在监听特定的队列。长话短说:http://docs.celery

python - 如何通过名称限制运行的 Celery 任务的最大数量

如何限制可以同时运行的特定Celery任务的实例数?我有一个处理大文件的任务。我遇到了一个问题,用户可能会启动多个任务,导致服务器在尝试一次处理太多文件时耗尽CPU和内存。我想确保在任何给定时间只运行这种类型任务的N个实例,并且其他任务将在调度程序中排队,直到其他任务完成。我看到有一个rate_limit任务装饰器中的选项,但我认为这不是我想要的。如果我正确理解文档,这只会限制任务启动的速度,但不会限制运行的任务总数,所以这会使我的服务器崩溃得更慢......但它仍然会尽管如此还是崩溃了。 最佳答案 您必须设置额外的队列并为其设置所

python - 在一台机器上的 celery worker 之间共享内存区域

我想在celery中的工作节点之间共享小块信息(例如缓存的授权token、统计信息等)。如果我在我的任务文件中创建一个全局变量,它对每个工作人员都是唯一的(我的工作人员是进程,并且有1个任务/执行的生命周期)。最佳做法是什么?我是否应该在外部保存状态(DB),创建一个老式的共享内存(由于celery中不同的池实现可能很困难)?提前致谢! 最佳答案 我终于找到了一个像样的解决方案——corepythonmultiprocessing-Manager:frommultiprocessingimportManagermanag=Manag

python - Celery 第一步 - result.get() 超时错误

我在这里学习Celery第一步教程:http://celery.readthedocs.org/en/latest/getting-started/first-steps-with-celery.html#keeping-results我按照原样使用RabbitMQ学习教程。当我执行result.get(timeout=1)时,它显示超时错误,即使它是一个简单的添加操作,我可以看到工作人员正在运行并在另一个中生成正确的结果(8)窗口(venv)C:\Volt\celerytest>ipythonPython2.7.6(default,Nov102013,19:24:18)[MSCv.1

python - Django-Celery:未创建 djkombu_queue 表

编辑2如果有人可以发布架构应该是什么,我会非常高兴!我只需要知道表名和列名!我正在学习本教程:http://www.caktusgroup.com/blog/2014/06/23/scheduling-tasks-celery/我已经成功地通过pip安装了django-celery。#settings.pyimportdjcelerydjcelery.setup_loader()BROKER_URL='django://'INSTALLED_APPS=('django.contrib.admin','django.contrib.auth','django.contrib.conten

python - celery - 链中的组

我想在链中使用一个组(或block),例如:chain(getRange.s(3),GROUP(),xsum.s())其中GROUP()是一组double()任务,即group(double(0),double(1),double(2))。HowtochainaCelerytaskthatreturnsalistintoagroup?中发布了类似的问题但它没有解释如何将输出从组传递到链中的下一个任务。@taskdefgetRange(x):returnrange(x)@taskdefdouble(nr):returnnr*2@taskdefxsum(list):returnsum(li

python - 使用 Python、Flask 和 Celery 的并发异步进程

我正在开发一个小型但计算密集型的Python应用程序。计算密集型工作可以分解成几个可以同时执行的部分。我正在尝试确定一个合适的堆栈来完成此任务。目前我计划在Apache2+WSGI上使用Flask应用程序和Celery作为任务队列。在下面,如果有3个或更多worker可用,a_long_process()、another_long_process()和yet_another_long_process()是否会同时执行?Flask应用程序会在进程执行时被阻塞吗?来自Flask应用:@myapp.route('/foo')defbar():task_1=a_long_process.del

python - 如果其中一项任务失败,Celery 链就会中断

如果其中一项任务失败导致整个链断裂,Celery链还有什么意义?!!我有这个Celery链:res=chain(workme.s(y=1111),workme2.s(2222),workme3.s(3333),)()我让workme2像这样重试失败了:@celery.task(default_retry_delay=5,max_retries=10,queue="sure")defworkme2(x,y):#try:try:printstr(y)sleep(2)printstr(x)##addinganyconditionthatmakesthetaskfailifx!=None:ra