'Celery + Django on Windows: debugging asynchronous tasks
With Django 1.8 I used Django-celery
to run asynchronous tasks and I was able to debug them in my IDE (either PyCharm or Eclipse+PyDev) just launching "python celery worker" in debug mode.
Django-celery
doesn't support Django 2.2, so I have to run pure celery.exe.
Celery docs say that I have to add pdb
to my code and run debug via console.
How can I debug these tasks as I did before, adding breakpoints dynamically from my IDE?
Solution 1:[1]
You can use CELERY_ALWAYS_EAGER = True
setting in you development env. If this is True, all tasks will be executed locally without sending it to a queue.
Solution 2:[2]
You can use celery.contrib.rdb, an extension of pdb.
from celery.contrib import rdb
from celery.task import task
@task
def add(x,y):
result=× + y
rdb.set_trace() #set breakpoint
return x+y
Open next terminal and type
telnet localhost 6900
Now you are in debug mode.
Solution 3:[3]
Telnet solution doesn't work for me.
But I was able to debug my tasks with pdb
.
Add breakpoint: pdb.set_trace()
.
Then just run worker with -l warning
, it will prevent printing of excessive info.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | neverwalkaloner |
Solution 2 | |
Solution 3 | Ledorub |