【发布时间】:2021-10-03 07:44:15
【问题描述】:
我在 django 项目中使用 celery 和 redis 作为代理。
我遇到的问题是,即使没有运行任何任务,只要启动 worker 就会产生多达 10 个与 redis 服务器的新连接。
celery -A proj worker -l INFO
如果我在 redis-cli 中检查 CLIENT LIST,我会看到:
127.0.0.1:6379> CLIENT LIST
id=272 addr=127.0.0.1:48846 fd=16 name= age=63 idle=63 flags=N db=2 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20520 events=r cmd=sadd user=default
id=270 addr=127.0.0.1:48842 fd=14 name= age=64 idle=64 flags=N db=2 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20520 events=r cmd=publish user=default
id=4 addr=127.0.0.1:46946 fd=8 name= age=14901 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default
id=265 addr=127.0.0.1:48832 fd=9 name= age=64 idle=0 flags=b db=2 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20536 events=r cmd=brpop user=default
id=266 addr=127.0.0.1:48834 fd=10 name= age=64 idle=63 flags=N db=2 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20520 events=r cmd=sadd user=default
id=273 addr=127.0.0.1:48848 fd=17 name= age=63 idle=2 flags=P db=2 sub=0 psub=1 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20504 events=r cmd=psubscribe user=default
id=274 addr=127.0.0.1:48850 fd=18 name= age=63 idle=63 flags=N db=2 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20520 events=r cmd=sadd user=default
id=267 addr=127.0.0.1:48836 fd=11 name= age=64 idle=64 flags=N db=2 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20496 events=r cmd=ping user=default
id=268 addr=127.0.0.1:48838 fd=12 name= age=64 idle=2 flags=N db=2 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20520 events=r cmd=publish user=default
id=269 addr=127.0.0.1:48840 fd=13 name= age=64 idle=64 flags=N db=2 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20496 events=r cmd=ping user=default
id=271 addr=127.0.0.1:48844 fd=15 name= age=63 idle=14 flags=P db=2 sub=0 psub=1 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20504 events=r cmd=ping user=default
我尝试过更改--concurrency=1,以及CELERY_BROKER_POOL_LIMIT=None 和BROKER_TRANSPORT_OPTIONS = {'max_connections': 1},但似乎都没有改变与redis 的连接数。
我的问题是,是什么造成了所有这些联系,究竟是为了什么?
【问题讨论】: