我正在使用Cerely管理我的django项目的延迟任务。
当我按照 manual 中的建议尝试关闭芹菜时,我遇到了问题。
>> ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9
kill: No such process
>> ps auxww | grep 'celery worker' | awk '{print $2}
28630
>> ps auxww | grep 'celery worker' | awk '{print $2}
28633
PID连续变化并且很难发送查杀信号。
我该如何解决这个问题?提前谢谢。
[更新]
django settings.py
import djcelery
djcelery.setup_loader()
BROKER_URL = 'amqp://guest:guest@localhost:5672/' # Using RabbitMQ
CELERYD_MAX_TASKS_PER_CHILD = 1
PID检查(重启后)
>> ps auxww | grep 'celery worker' | awk '{print $2}'
3243
>> manage.py celery worker --loglevel=info
celery@{some id value}.... ready
>> ps auxww | grep 'celery worker' | awk '{print $2}'
3285
3293
3296
>> ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9
kill: No such process
>> ps auxww | grep 'celery worker' | awk '{print $2}'
3321
>> ps auxww | grep 'celery worker' | awk '{print $2}'
3324
问题
答案 0 :(得分:1)
使用CELERYD_MAX_TASKS_PER_CHILD
设置正是您所要求的:
池工作进程在用新工作进程替换之前可以执行的最大任务数。
显然你想运行一个工作进程,但是由不同的设置控制,即CELERYD_CONCURRENCY
。
所以,替换
CELERYD_MAX_TASKS_PER_CHILD = 1
与
CELERYD_CONCURRENCY = 1