Celery Cloudamqp为每个任务创建新连接

时间:2014-04-23 16:10:08

标签: python django celery django-celery cloudamqp

我目前正在使用运行Django和Celery的nitrous.io,然后使用Cloudamqp作为我的经纪人和免费计划(最多3个连接)。我能够很好地连接并开始定期任务。

当我跑步时

    celery -A proj worker  -l info   

在Cloudamqp上立即创建了2个连接,我可以在第3个连接上手动创建多个任务,一切都很顺利。但是,当我用

运行芹菜时
    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个连接立即无效? 是否有某种方法将初始芹菜连接限制为0或1,或者让任务在芹菜节拍连接上共享/运行?

1 个答案:

答案 0 :(得分:1)

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

BROKER_POOL_LIMIT = 0

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

AMQP后端没有这样的设置。

鉴于此,我不确定BROKER_POOL_LIMIT的意图,但我真的很想看CELERY_AMQP_MAX_CONNECTIONS

这是一个相关的,未回答的问题:How can I minimise connections with django-celery when using CloudAMQP through dotcloud?