草庐IT

python - 如何调试在 Eclipse 中本地运行的 Celery/Django 任务

我需要从Eclipse调试器调试Celery任务。我正在使用Eclipse、PyDev和Django。首先,我在Eclipse中打开我的项目并在任务函数的开头放置一个断点。然后,我通过在PyDev包资源管理器中右键单击manage.py并选择“DebugAs->PythonRun”并指定“celeryd-linfo”作为参数,从Eclipse启动Celeryworker。这将启动MainThread、Mediator和另外三个从Eclipse调试器可见的线程。之后我返回PyDevView并通过右键单击项目并选择RunAs/PyDev:Django启动主应用程序我的问题是,一旦任务由my

python - 同时在进程中使用 Celery 并在任务中使用 gevent

我想将Celery用作我的任务队列,这样我的网络应用程序就可以将任务排入队列,返回响应,并且该任务将同时处理/某天/...我构建了一种API,所以我不知道会提前有什么样的任务——future可能会有处理HTTP请求的任务,另一个IO,还有CPU消耗的任务。在这方面,我想在进程上运行Celery的工作人员,因为这些是Python中通用的并行性。但是,我也想在我的任务中使用gevent,所以我可以让一个任务产生许多HTTP请求等。问题是,当我这样做时:fromgeventimportmonkeymonkey.patch_all()celery停止工作。它开始了,但没有任务可以有效地排队——

python - celery worker 错误 : ImportError no module named celery

我在尝试启动celeryworker时遇到导入错误。我不确定问题是什么。任何帮助将不胜感激。我的项目:email/__init__.py/celery.py我尝试通过调用来运行应用程序:celeryworker--app=email我已经按照这里的所有步骤-http://docs.celeryproject.org/en/latest/getting-started/next-steps.html#about-the-app-argument回溯:File"/Users/.../bin/celery",line9,inload_entry_point('celery==3.0.24',

python - 如何停止 celery worker 进程

我在UbuntuEC2节点上有一个Django项目,我一直用它来设置异步使用Celery。我关注this连同文档。我已经能够在命令行上完成一项基本任务,使用:(env1)ubuntu@ip-172-31-22-65:~/projects/tp$celery--app=myproject.celery:appworker--loglevel=INFO启动一个worker。从那以后,我对Python进行了一些更改,但意识到我需要重新启动一个worker。从命令行,我试过了:psauxww|grep'celeryworker'|awk'{print$2}'|xargskill-9但我可以看到

python - 与 celery 正在进行的任务交互

我们有一个基于rabbitMQ和Celery的分布式架构。我们可以毫无问题地并行启动多个任务。扩展性好。现在我们需要远程控制任务:暂停、恢复、取消。我们找到的唯一解决方案是在Celery任务中对另一个任务进行RPC调用,该任务在DB请求后回复命令。Celery任务和RPC任务不在同一台机器上,只有RPC任务可以访问数据库。您对如何改进它并轻松与正在进行的任务进行沟通有什么建议吗?谢谢编辑:事实上,我们想做如下图所示的事情。Blue配置或Orange配置很容易,但我们不知道如何同时进行。Worker订阅了一个通用的Jobsqueue,每个worker都有自己的Adminqueue在交换中

python - celery - 如何从远程机器发送任务?

我们有一个运行celeryworker的服务器和一个Redis队列。任务是在该服务器上定义的。我需要能够从远程机器调用这些任务。我知道它是使用send_task完成的,但我还没有弄清楚如何?如何告诉send_task队列在哪里?我在哪里传递连接参数(或任何需要的)?我一直在寻找几个小时,我能找到的是:fromcelery.executeimportsend_tasksend_task('tasks.add')嗯,这意味着我的调用机器上也需要celery。但是我还需要设置什么? 最佳答案 这可能是一种方式:创建一个Celery对象并使

python - 如何按任务名称检查和取消 Celery 任务

我使用Celery(3.0.15)和Redis作为代理。是否有一种直接的方法可以查询Celery队列中存在的具有给定名称的任务的数量?作为后续,有没有办法取消Celery队列中存在的所有具有给定名称的任务?我已经通过MonitoringandManagementGuide并且在那里看不到解决方案。 最佳答案 #Retrievetasks#Reference:http://docs.celeryproject.org/en/latest/reference/celery.events.state.htmlquery=celery.ev

python - 在不运行 `celeryd` 的情况下使用 Django+Celery 进行开发?

在开发中,运行celeryd以及Django开发服务器有点麻烦。例如,是否可以要求celery在开发过程中同步运行任务?还是类似的? 最佳答案 是的,您可以通过在设置中设置CELERY_TASK_ALWAYS_EAGER=True来做到这一点。(常量以前称为CELERY_ALWAYS_EAGER)http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-execution-settings 关于py

python - Celery Worker 数据库连接池

我正在使用Celery独立(不在Django中)。我计划在多台物理机器上运行一种工作任务类型。该任务执行以下操作接受XML文档。转换它。使多次数据库读取和写入。我使用的是PostgreSQL,但这同样适用于使用连接的其他存储类型。过去,我使用数据库连接池来避免在每个请求上创建新的数据库连接或避免连接打开时间过长。但是,由于每个Celery工作人员都在单独的进程中运行,我不确定他们实际上如何能够共享池。我错过了什么吗?我知道Celery允许您保留从Celery工作人员返回的结果,但这不是我在这里想要做的。根据处理的数据,每个任务可以执行多个不同的更新或插入。从Celeryworker中访

python - Celery:如何忽略和弦或链中的任务结果?

我正在使用celery,我有几个任务需要按顺序执行。例如我有这个任务:@celery.taskdeftprint(word):printword我想做这样的事情:>>>chain(tprint.s('a')|tprint.s('b'))()然后我得到TypeError:tprint()只需要1个参数(给定2个)。和chord一样,在这种情况下,我需要在一组任务之后执行一个任务:>>>chord([tprint.s('a'),tprint.s('b')])(tprint.s('c'))那么如何处理这种情况呢?我不关心每个任务的结果,但它们需要按顺序执行。添加第二个参数不起作用:@cele