1

我有很长时间在我的实时服务器中运行任务。任务涉及从 facebook 获取数据并使用 reportlab PDF 包生成 PDF。

对于这些,我有 3 个并发级别为 5 的工作人员,因此我可以并行执行 30 个 PDF 任务。

但是当同时运行 10 个任务时,长时间运行的任务会打破其他任务的任务硬时间限制(12 小时)。

但在我的服务器中,单个 PDF 任务最多需要 3 小时或在最坏的情况下需要 4 小时。但是当我以并发级别 5 运行所有工作人员时,一些任务正在成功,一些任务的时间限制超过(12 小时)。但我的目标是需要在 4 或 5 小时内完成所有这 10 项任务。

有没有最好的方法来处理长时间运行的任务?

我也在使用 django - celery 包。
我的芹菜 Conf:

CELERYD_OPTS="-time-limit=43200 --concurrency=10"
CELERYD_CONCURRENCY = 10
CELERYD_NODES = "worker1 worker2 worker3"

运行工人: python manage.py celeryd_multi restart n1 n2 n3 -l info -f celery.log -c 10 --purge -Q:n1,n2,n3 backend

4

0 回答 0