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)
Что я делаю не так?