Kill All Celery workers on file change Django kill: illegal process id: $(ps

У меня есть скрипт перезапуска Celery, настроенный в Django management - commands в моем проекте. Скрипт работает нормально до того момента, когда он должен убить существующий процесс Celery, после чего OSX выдает ошибку "illegal process id: $(ps". У меня есть следующий скрипт kill (любезно предоставленный Harshith):

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

Этот сценарий работает, только если я ввожу его вручную в Terminal.

Вот полный сценарий в командном режиме: celery_worker.py

import shlex
import sys
import subprocess

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


def restart_celery():

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

    subprocess.call(shlex.split(cmd))
    subprocess.call(shlex.split('celery -A backoffice worker -B -l DEBUG'))


class Command(BaseCommand):

    def handle(self, *args, **options):
        print('Starting celery worker with autoreload...')
        autoreload.run_with_reloader(restart_celery)

Что я делаю не так?

Вернуться на верх