问题标签 [celery-task]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 芹菜 - 链内组
我想在链中使用一个组(或块),例如:
GROUP()
一组任务在哪里double()
,即group(double(0),double(1),double(2))
。How to chain a Celery task that return a list into a group?中发布了一个类似的问题?但没有解释如何将输出从组传递到链中的下一个任务。
celery - Celeryd 不会处决我的工人
我正在尝试在 celery 中守护我的任务,我已经在没有守护进程的情况下进行了测试,并且运行良好。
但我不能像教程所说的那样守护进程(http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#daemonizing)我有我的文件:
solr_desa.py
芹菜配置文件
还有 /etc/default/celeryd
我使用https://github.com/celery/celery/blob/3.0/extra/generic-init.d/celeryd中的默认 celeryd 执行,但任务只是排队,但看起来没有工人 :(
我的配置错误在哪里?:(
python - Python Celery 任务在没有后端的情况下完成
我正在使用芹菜 3.0.12。
我有两个队列:Q1,Q2。
一般来说,我将主要任务放在 Q1 中,然后调用 Q2 中的子任务。我不想为子任务存储任何结果。所以我的子任务有装饰器@celery.task(ignore_results=True)。
我的主要任务现在应该等到子任务完成。因为我没有写结果。我不能使用:AsyncResult。有没有办法在主任务中等待子任务完成而不将状态存储到后端。我对 AsyncResults 的所有尝试都不是成功的燃料(它依赖于后端)。似乎 get() 也依赖于后端。
代码中的整个故事:
我正在用 Celery Flower 监控整个应用程序,我可以看到子任务正在成功完成。Celery 如何检测到这种状态?我浏览了他们的代码,但不知道他们是如何进行检测的。
django - 芹菜计划任务立即执行而不是延迟
我正在尝试使用:(是一个带有装饰器的简单python方法)来安排一个芹菜任务mytask.apply_async(countdown=120)
的mytask
执行@task
。但是,当我调用它时,任务会立即执行,而不是在 2 分钟后执行,并返回类似<EagerResult: 2b41cba1-81ff-489c-81bb-f1ad994d4441>
. 知道我在这里缺少什么吗?我也尝试过使用eta
而不是countdown
. 我的芹菜配置如下:
-- v3.0.12 (Chiastic Slide)
[Configuration]
-- broker: redis://localhost:6379/0
-- app: default:0x106090f50 (djcelery.loaders.DjangoLoader)
-- concurrency: 4 (processes)
-- events: OFF (enable -E to monitor this worker)
[Queues]
-- celery: exchange:celery(direct) binding:celery
如果有帮助,我会以这种方式开始我的芹菜: python manage.py celeryd -l DEBUG -B
并且有定期的 crontasks 可以正常工作。
谢谢
redis - 在 celery 中,如何确保在 worker 崩溃时重试任务
首先,请不要将此问题视为此问题的 重复
我有一个使用celery
and redis
asbroker
和result_backend
. 我的问题是如何确保当芹菜工人崩溃时,当芹菜工人备份时,所有计划的任务都被重新尝试。
我已经看到有关使用的建议CELERY_ACKS_LATE = True
,以便代理将重新驱动任务,直到它得到一个 ACK,但在我的情况下它不起作用。每当我安排一项任务时,它都会立即转到工作人员,该工作人员将其持续到预定的执行时间。让我举个例子:
我正在安排这样的任务:res=test_task.apply_async(countdown=600)
,但立即在 celery worker 日志中我可以看到类似 :的内容Got task from broker: test_task[a137c44e-b08e-4569-8677-f84070873fc0] eta:[2013-01-...]
。现在当我杀死芹菜工人时,这些计划任务就会丢失。我的设置:
celery - 从周二 12 点到周三 12 点为 Celery 编写 cron 任务
我正在尝试编写一个定期cron
任务,celery
该任务应该从周二中午 12 点到周三下午 12 点每小时执行一次。这是一个 24 小时的周期,但跨越了两个不同的日子。是否可以将其安排为单个任务,例如
@periodic_task(run_every=crontab(<an expression equivalent to stated above>))
目前我正在编写两个任务:一个带有装饰器:
crontab(minute='0',hour='12-23',day_of_week='tue')
另一个带有此处
crontab(minute='0',hour='0-11',day_of_week='wed')
给出了一些示例
谢谢
python - 使用 Python 和 Celery 进行多模块日志记录
我已经实现了一个 Celery 任务,它使用了一些外部库。
假设任务代码是这样的:
而我导入的 2 个模块基本上是:
和:
我想获得一个日志文件,其中包含my_job_id
每行中的正确值,具体取决于执行的任务。
它会是这样的:
我可以轻松地将 的值包含my_job_id
到任务记录器中,正确获取我从任务函数内部记录的行(如[1][...other info..] My task executed with my_job_id=1
和[2][...other info..] My task executed with my_job_id=2
)。
但是外部库呢?是否有一种优雅的方式来“包装”外部脚本生成的日志并根据我的要求对其进行格式化?
celery - Celery 在不到两周的时间内发送了 60 万个请求
我今天收到了 Amazon SQS 的月度账单,我很惊讶地看到我的队列使用了 600.000 个请求。
我所做的只是每分钟运行一个任务。这如何增加 600.000 个请求?
我对芹菜还是新手,所以可能是我在做一些根本错误的事情。请问有什么提示吗?
django - result.ready() 在 django celery 中没有按预期工作?
我有一个 django celery 视图,它执行某些任务,并在任务成功完成后将其写入数据库。
我正在这样做:
和,
但是在任务完成执行后,它不会进入 if 条件。我试过result.ready()
但没有运气。
编辑:以上几行在同一个视图中:
e: #写入数据库
celery - 在芹菜中,让多个工人处理同一个队列的目的是什么?
在 celeryd-multi 的文档中,我们找到了这个例子:
(从这里:http ://docs.celeryproject.org/en/latest/reference/celery.bin.celeryd_multi.html#examples )
什么是一个实际的例子,说明为什么在一个主机上让多个工作人员处理同一个队列会很好,就像上面的例子一样?这不是设置并发的目的吗?
更具体地说,以下两行(A和B)之间是否有任何实际区别?:
A:
乙:
我担心由于我不理解这种实际差异而错过了一些关于任务队列的宝贵知识,如果有人能启发我,我将不胜感激。
谢谢!