在更改监听端口的Docker容器中运行celery pdb

7 投票
2 回答
2120 浏览
提问于 2025-04-18 23:46

我想知道怎么在我的Docker容器里运行celery pdb,同时进行端口转发,这样我就可以从外部访问。

我正在按照这个指南操作:http://celery.readthedocs.org/en/latest/tutorials/debugging.html

我遇到的问题是,即使我在容器里设置了:

-e CELERY_RDB_HOST='0.0.0.0' -e CELERY_RDB_PORT='6900' -p 6900:6900。

当我在应用程序中到达断点时,实际打开的端口并不是我要求的那个,所以我的端口转发就失效了……比如说,打开的是6902端口,而不管我怎么设置,端口总是会变成我不想要的。

我知道它会从100个它认为“可用”的端口中选择,但我不太清楚怎么解决这个问题。任何建议都很欢迎。

谢谢!

2 个回答

0

我也遇到了同样的问题,使用的是2020年11月的celery v4.4.7版本。无论我把环境变量CELERY_RDB_PORT设置成什么,最后得到的端口号总是比我设置的多2。比如说,如果我设置成9024,rdb监听的端口就会变成9026。

你的docker命令可能是这样的。

CELERY_RDB_HOST='0.0.0.0' -e CELERY_RDB_PORT='6900' -p 6902:6902

这可能是celery的一个bug。

4

你可以通过指定一系列端口来运行你的容器(具体可以查看这里的说明):

docker run -d -e CELERY_RDB_HOST='0.0.0.0' -p 6900-7000:6900-7000 celery

之后,当你到达你的断点时,只需要用telnet连接进去就可以了:

telnet localhost 6902

撰写回答