草庐IT

python - 任务状态和 django-celery

我使用django-celery并有这样的任务:classTestTask(Task):name="enabler.test_task"defrun(self,**kw):debug_log("begintesttask")time.sleep(5)debug_log("endtesttask")defon_success(self,retval,task_id,args,kwargs):debug_log("onsuccess")defon_failure(self,retval,task_id,args,kwargs):debug_log("onfailure")我使用django

python - Django Celery 实现 - OSError : [Errno 38] Function not implemented

我安装了django-celery并尝试启动工作服务器,但我收到一个OSError,表示某个功能未实现。我在VPS上运行CentOS5.4版(最终版):.broker->amqp://guest@localhost:5672/.queues->.celery->exchange:celery(direct)binding:celery.concurrency->4.loader->djcelery.loaders.DjangoLoader.logfile->[stderr]@WARNING.events->OFF.beat->OFF[2010-07-2217:10:01,364:WAR

python - Celery + Eventlet + 非阻塞请求

我在celeryworkers中使用Pythonrequests进行大量(~10/秒)API调用(包括GET、POST、PUT、DELETE)。每个请求大约需要5-10秒才能完成。我尝试在eventlet池中运行celeryworker,并发数为1000。由于请求是阻塞进程,每个并发连接都在等待一个请求。如何使请求异步? 最佳答案 使用eventletmonkeypatching使任何纯Python库成为非阻塞的。补丁单库#importrequests#insteaddothis:importeventletrequests=eve

python - 如何创建 Celery Windows 服务?

我正在尝试创建一个Windows服务来启动Celery。我遇到过一篇使用TaskScheduler做的文章.然而,它似乎启动了许多celery实例并不断消耗内存直到机器死机。有什么方法可以将其作为Windows服务启动吗? 最佳答案 我从另一个网站得到了答案。Celeryd(Celery的守护程序服务)作为粘贴应用程序运行,搜索“PasterWindows服务”引导我here.它描述了如何将Pylons应用程序作为Windows服务运行。作为paster框架和托管python网络服务的新手,我一开始并没有想过要检查它。但该解决方案适

python - 从 celery 任务中获取 celery worker 的名字?

我希望celery任务能够获取执行它的工作人员的姓名,以便进行日志记录。我需要在任务中处理这个问题,而不是直接查询代理。有没有办法做到这一点?如果重要的话,我正在将celery与RabbitMQ一起使用。 最佳答案 使用celeryd_after_setup信号像这样捕获worker名称:fromcelery.signalsimportceleryd_after_setup@celeryd_after_setup.connectdefcapture_worker_name(sender,instance,**kwargs):os.e

python - Celery 作为网络发布/订阅事件

我想设置一个网络发布/订阅事件系统,但还需要能够异步运行任务。我曾尝试让celery来完成繁重的工作,但我觉得我正在尝试填充一大堆东西来让它工作。我有两台机器(输入和输出),它们都可以访问RabbitMQ。我想让一个主程序启动一个等待输入的循环(网络摄像头检测到的运动)。我已经设置了input_machine启动main.py,它启动了一个celery任务,该任务由input_machine上的工作人员监控到“输入”队列。这个任务只运行whileTrue循环,直到检测到一些输入,然后它调用另一个名为('project.entered_room',什么都不做)celery任务到“输出”队

python - 如何处理 celery 的 Task.map 中的错误

假设我有两个celery任务:@celery.taskdefrun_flakey_things(*args,**kwargs):returnrun_flakey_and_synchronous_thing.map(xrange(10)).apply_async()@celery.taskdefrun_flakey_and_synchronous_thing(a):ifa%5:returnaraiseRuntimeError(a)因此,当您运行run_flakey_things时,它会立即失败,因为序列中的第一项会引发异常。我想要的是像map一样按顺序为序列中的所有项目运行任务,但继续运

python - 在 Celery 中,我怎样才能防止长期延迟的任务阻塞更新的任务?

我有两种任务。任务A由celerybeat每小时生成一次。它会立即运行,并生成一千(或几千)个任务B实例,每个实例的ETA都是future一天。启动时,任务A的一个实例运行并生成一千个B。从那时起,什么也没有发生。我应该看到另一个A每小时运行一次,还有一千个B。但实际上我什么也没看到。在卡住时,rabbitmqctl显示1000条消息,其中968条准备就绪,32条未确认。一小时后,有1001条消息,其中969条已准备就绪,32条未确认。依此类推,每小时一条新消息被归类为就绪。据推测,正在发生的事情是工作人员正在预取32条消息,但无法对它们采取行动,因为它们的ETA仍在未来。与此同时,本

python - 测试 celery 任务是否仍在处理中

如何测试任务(task_id)是否仍在celery中处理?我有以下场景:在DjangoView中启动任务在session中存储BaseAsyncResult关闭celery守护进程(硬)以便不再处理任务检查任务是否“已死”有什么想法吗?能否查找celery正在处理的所有任务并检查我的任务是否仍然存在? 最佳答案 在你的模型中定义一个字段(PickledObjectField)来存储celery任务:classYourModel(models.Model):..celery_task=PickledObjectField()..def

python - 为什么 celery 没有干净地关闭?

在使用Ctlr-C键盘中断向Celeryworker发出两次TERM信号(热关机和冷关机)后,Celeryworker就被挂断了。它没有使用消息或执行任务(如预期的那样),但也没有关闭。我在Celery进程上运行strace以查看幕后发生的事情。这是Celery主进程的PID上的strace输出strace-p27867Process27867attached-interrupttoquitfutex(0xb966a78,FUTEX_WAIT,0,NULL这是我在子进程上执行strace时发现的:strace-p27874Process27874attached-interruptto