I have a Django project on an Ubuntu EC2 node, which I have been using to set up an asynchronous using Celery
.
I am following this along with the docs.
I've been able to get a basic task working at the command line, using:
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ celery --app=myproject.celery:app worker --loglevel=INFO
To start a worker. I have since made some changes to the Python, but realized that I need to restart a worker.
From the command line, I've tried:
ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9
But I can see that the worker is still running.
How can I kill it?
edit:
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ sudo ps auxww | grep celeryd | grep -v "grep" | awk '{print $2}' | sudo xargs kill -HUP kill: invalid argument H Usage: kill [options] <pid> [...] Options: <pid> [...] send signal to every <pid> listed -<signal>, -s, --signal <signal> specify the <signal> to be sent -l, --list=[<signal>] list all signal names, or convert one to a name -L, --table list all signal names in a nice table -h, --help display this help and exit -V, --version output version information and exit For more details see kill(1).
edit 2:
(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ ps aux|grep celery ubuntu 9756 0.0 3.4 100868 35508 pts/6 S+ 15:49 0:07 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO ubuntu 9760 0.0 3.9 255840 39852 pts/6 S+ 15:49 0:05 /home/ubuntu/.virtualenvs/env1/bin/python3.4 /home/ubuntu/.virtualenvs/env1/bin/celery --app=tp.celery:app worker --loglevel=INFO ubuntu 12760 0.0 0.0 10464 932 pts/7 S+ 19:04 0:00 grep --color=auto celery
In this setup, when running a celery worker with --pool solo option, kill -KILL <pid> stops worker immediately.
celery -A yourproject. app inspect status will give the status of your workers. celery -A yourproject. app inspect active will give you list of tasks currently running, etc.
The soft time limit allows the task to catch an exception to clean up before it is killed: the hard timeout isn't catch-able and force terminates the task.
Try this in terminal
ps aux|grep 'celery worker'
You will see like this
username 29042 0.0 0.6 23216 14356 pts/1 S+ 00:18 0:01 /bin/celery worker ...
Then kill process id by
sudo kill -9 process_id # here 29042
If you have multiple processes, then you have to kill all process id using above kill
commmand
sudo kill -9 id1 id2 id3 ...
From the celery doc
ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9
OR if you are running celeryd
ps auxww | grep celeryd | awk '{print $2}' | xargs kill -9
Note
If you are running celery
in supervisor
, even though kill the process, it automatically restarts(if autorestart=True
in supervisor script).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With