4

我目前正在使用 nitrous.io 运行带有 Celery 的 Django,然后使用 Cloudamqp 作为我的免费计划代理(最多 3 个连接)。我能够很好地连接并很好地启动定期任务。

当我跑

    celery -A proj worker  -l info   

在 Cloudamqp 上立即创建了 2 个连接,我能够在第 3 个连接上手动创建多个任务,一切都很好。但是,当我运行 celery beat 时

    celery -A proj worker -B -l info

使用所有 3 个连接,如果 celery beat 创建 1 个或多个新任务,则将创建另一个第 4 个连接,从而超出允许的最大连接数。

我已经尝试过,目前已经设置

    BROKER_POOL_LIMIT = 1

但这似乎并没有限制我也尝试过的连接

    celery -A proj worker -B -l info
    celery -A proj worker -B -l info -c 1  
    celery -A proj worker -B -l info --autoscale=1,1  -c 1  

没有运气。

为什么立即建立了 2 个什么都不做的连接?是否以某种方式将初始 celery 连接限制为 0 或 1,或者让任务在 celery beat 连接上共享/运行?

4

1 回答 1

1

虽然它实际上并没有限制连接,但另一位用户发现禁用连接池实际上减少了连接数量: https ://stackoverflow.com/a/23563018/1867779

BROKER_POOL_LIMIT = 0

Redis 和 Mongo 后端有自己的连接限制参数。

AMQP 后端没有这样的设置。

鉴于此,我不确定要做什么BROKER_POOL_LIMIT,但我真的很想看看CELERY_AMQP_MAX_CONNECTIONS

这是一个相关的未回答的问题:通过 dotcloud 使用 CloudAMQP 时,如何最大限度地减少与 django-celery 的连接?

于 2015-01-24T07:25:41.130 回答