使用djcelery时,Revoke、Terminate和Kill有什么区别?
我正在使用djcelery和Django的管理网站。如果我想停止一个已经开始的djcelery任务,我是用revoke、terminate还是kill,这三者有什么区别呢?
1 个回答
2
你应该使用 terminate
来结束一个已经开始的任务。
撤销(revoke):
>>> from celery.task.control import revoke
>>> revoke(task_id)
当一个工作者收到撤销请求时,它会跳过执行这个任务,但不会终止已经在执行的任务。
终止(terminate):
>>> from celery.task.control import revoke
>>> revoke(task_id, terminate=True)
如果设置了终止,处理这个任务的工作者子进程会被结束。默认发送的信号是 TERM。终止一个任务也会撤销它。
杀死(kill):
这和上面两个不同。 KILL
是用来杀死工作者的。
ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9