我目前正在使用运行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,或者让任务在芹菜节拍连接上共享/运行?
答案 0 :(得分:1)
虽然它实际上并没有限制连接,但是另一个用户发现禁用连接池会减少实际连接数: https://stackoverflow.com/a/23563018/1867779
BROKER_POOL_LIMIT = 0
Redis和Mongo后端有自己的连接限制参数。
max_pool_size
参数)AMQP后端没有这样的设置。
鉴于此,我不确定BROKER_POOL_LIMIT
的意图,但我真的很想看CELERY_AMQP_MAX_CONNECTIONS
。
这是一个相关的,未回答的问题:How can I minimise connections with django-celery when using CloudAMQP through dotcloud?