草庐IT

php - 如何在 PHP 的 celery-rabbitmq 队列上发布任务?

我安装了以下版本的celery和rabbitmq-celery3.1.6rabbitmq3.1.1我可以从PHP将任务发布到默认队列-//client.phpPostTask('tasks.add',array(2,2));我的worker模块在python中-#tasks.pyfromceleryimportCelerycelery=Celery('tasks',broker='amqp://guest:guest@localhost:5672//')@celery.task(queue='demo',name='add')defadd(x,y):returnx+y我像这样运行cel

python - Celery:如何将失败的任务路由到死信队列

我是celery的新手,我尝试将这个任务队列集成到我的项目中,但我仍然不明白celery如何处理失败的任务,我想将所有这些保留在amqp死信中排队。根据文档here似乎在启用了acks_late的任务中引发Reject会产生与确认消息相同的效果,然后我们再谈谈死信队列。所以我在我的celery配置中添加了一个自定义默认队列celery_app.conf.update(CELERY_ACCEPT_CONTENT=['application/json'],CELERY_TASK_SERIALIZER='json',CELERY_QUEUES=[CELERY_QUEUE,CELERY_DLX

python - 使用 celery 处理巨大的文本文件

背景我正在研究使用celery(3.1.8)来处理每个巨大的文本文件(~30GB)。这些文件在fastq中格式并包含大约118M测序“读数”,它们基本上都是header、DNA序列和质量字符串的组合)。此外,这些序列来自双端测序运行,因此我同时迭代两个文件(通过itertools.izip)。我希望能够做的是获取每对读取,将它们发送到队列,并让它们在我们集群中的一台机器上进行处理(不管是哪台机器)以返回清理后的版本如果需要进行清洁(例如,基于质量),则读取。我已经设置了celery和rabbitmq,我的workers启动如下:celeryworker-Atasks--autorelo

python - 去抖 celery 任务?

是否有用于消除Celery任务的标准方法?例如,一个任务可以多次“启动”,但在一些延迟后只会运行一次:defdebounce_task(task):iftask_is_queued(task):returntask.apply_async(countdown=30) 最佳答案 这是我们使用Redis计数器的方法。所有这些可能都可以在装饰器中概括,但我们只将它用于特定任务(webhooks)您的面向公众的任务是您从其他职能部门调用的任务。它需要在Redis中增加一个键。键由函数的参数组成,无论它们是什么(这确保计数器在各个任务中是唯一

Python:确保 os.environ 和 sys.path 相等:web-requests、shell、cron、celery

我想确保os.environ和sys.path对于我们启动Python解释器的所有方式都是相同的:通过Django和Apachemod_wsgi的网络请求计划任务通过ssh交互式登录celery作业通过systemd启Action业有解决这个问题的通用方法吗?如果是,那就太好了:它看起来怎么样?如果没有,很伤心:每个人都会自己解决这个问题。...解决这个问题的好方法是什么?操作系统:Linux(支持systemd)更新更明确:我希望sys.path在网络请求、cron作业、从shell启动的python中相同,...我希望os.environ在Web请求、cron作业、从shell启动

python - celery :不允许守护进程有 child

在Python(2.7)中,我尝试在celery任务(celery3.1.17)中创建进程(使用多处理),但它给出了错误:daemonicprocessesarenotallowedtohavechildren谷歌搜索,我发现最新版本的billiard修复了“错误”,但我有最新版本(3.3.0.20),但错误仍在发生。我还尝试实现thisworkaround在我的celery任务中,但它给出了同样的错误。有人知道怎么做吗?任何帮助表示赞赏,帕特里克编辑:代码片段任务:from__future__importabsolute_importfromceleryimportshared_ta

python - 让Celery在没有task_always_eager的情况下使用Django的测试数据库

在使用Celery任务的Django应用程序中运行测试时,我无法完全测试需要从数据库获取数据的任务,因为它们没有连接到Django创建的测试数据库。设置task_always_eager在Celery中设置为True部分解决了这个问题,但作为documentationfortesting说,这并不能完全反射(reflect)代码将如何在真正的Celeryworker上运行并且不适合测试。如何在不设置task_always_eager=True的情况下运行Django测试时让Celery任务使用Django测试数据库? 最佳答案 简短

python - celery - 完成任务时调用函数

我将celery与django和rabbitmq一起使用来创建消息队列。我也有一个worker,它来自另一台机器。在DjangoView中,我正在开始这样的过程:defprocesstask(request,name):args=["ls","-l"]MyTask.delay(args)returnHttpResponse("Tasksettoexecute.")我的任务是这样配置的:classMyTask(Task):defrun(self,args):p=subprocess.Popen(args,stdout=subprocess.PIPE,stderr=subprocess.P

python celery - ImportError : No module named _curses - while attempting to run manage. py celeryev

背景Windows7x64Python2.7Django1.4带Redisbundle的celery在尝试运行manage.pyceleryev时,我在终端中收到以下错误importcursesFile'c:\Python2\lib\curses\__init__.py',line15,infrom_cursesimport*ImportError:Nomodulenamed_curses我试过查看其他帖子,但未能解决这个问题。关于导致此错误的原因有什么想法吗?提前致谢。 最佳答案 根据http://docs.python.org/

python - Django Celery 教程不返回结果

UDATE3:发现了问题。请参阅下面的答案。UPDATE2:看来我可能一直在通过manage.pyshell运行djcelery教程来处理自动命名和相对导入问题,见下文。它仍然不适合我,但现在我收到新的日志错误消息。见下文。更新:我在帖子底部添加了日志。示例任务好像没有注册?原帖:我正在尝试启动并运行django-celery。我没能完成这个例子。我成功安装了rabbitmq并顺利完成了教程:http://www.rabbitmq.com/getstarted.html然后我尝试完成djcelery教程。当我运行pythonmanage.pyceleryd-linfo时,我收到消息:[