django 项目,例如在 /test/server/目录下执行 python manage.py celery worker -l info -c 30 -Ofair
启用了 30 个 worker,使用 pwdx 查看某个 worker 工作路径,显示在 /test/server,一切正常。
因为系统设置了 CELERYD_MAX_TASKS_PER_CHILD = 40 参数,也就是每个 worker 最多接收 40 次任务后就销毁重建。
重建的 worker 使用 pwdx 或者 ls -l /proc/pid/ 方式查看,发现 cwd 目录并不是上述的 /test/server,而是某个任务中曾经读写过的路径。
很奇怪这种现象,使用 CELERYD_CHDIR='/test/server/' 是否就能解决这个问题呢?