0

我正在关注 ChillarAnand 关于如何在我的 Django 项目中更改时重新加载 Celery 的示例,但它似乎并没有关闭以前的 Celery 工作人员。重新加载 Celery 时会引发以下错误:

[2021-08-11 10:42:30,216: WARNING/MainProcess] /Users/someuser/Documents/dev/backoffice/venv/lib/python3.8/site-packages/kombu/pidbox.py:72: UserWarning: A node named celery@someusers-iMac.local is already using this process mailbox!

Maybe you forgot to shutdown the other node or did not do so properly?
Or if you meant to start multiple nodes on the same host please make sure
you give each node a unique node name!

  warnings.warn(W_PIDBOX_IN_USE.format(node=self))

我在 Django 的管理 > 命令 celery_worker.py 中的代码如下:

import shlex
import subprocess
from django.core.management.base import BaseCommand
from django.utils import autoreload


class Command(BaseCommand):
    def handle(self, *args, **options):
        autoreload.run_with_reloader(self._restart_celery)

    @classmethod
    def _restart_celery(cls):
        cls.run('pkill -f "celery worker"')
        cls.run('celery -A backoffice worker -B -l DEBUG')

    @staticmethod
    def run(cmd):
        subprocess.call(shlex.split(cmd))

我尝试了以下“Kill”命令,在终端中使用时效果很好,但在命令脚本中使用时 OSX 会引发错误 - “kill:非法进程 ID:$(ps”


kill -9 $(ps aux | grep celery | grep -v grep | awk '{print $2}' | tr '\n' ' ') > /dev/null 2>&1kill -9 $(ps aux | grep celery | grep -v grep | awk '{print $2}' | tr '\n' ' ') > /dev/null 2>&1

OSX:11.5.1 Django:3.2.6 芹菜:5.1.2

任何指导将不胜感激。

4

0 回答 0