In settings.py:
`# Try to determine if the django server is running
try:
from commands import getoutput
DJANGO_SERVER = getoutput('ps ax').find('manage.py runserver ') > 0
except ImportError:
DJANGO_SERVER = False
`
In a file which you import:
`from django.conf import settings
if settings.DJANGO_SERVER:
try:
import ipdb as pdb
except ImportError:
import pdb
def trace():
pdb.set_trace()
else:
def trace():
pass
`
In the file in which you want to insert a trace:
from vs.utils import trace # vs.utils is where you defined the method above
# some code
trace()
Comments
This approach looks very risky to me - doesn't this mean that if you are using a separate runserver instance on your live server (which I sometimes do to fix bugs) your deployed instance will start firing up the debugger?
#
Yes, you are correct. This was a quick and dirty hack to get the technique to work. I'm sure there are ways to make the test more robust so kind of thing you are talking about will be handled correctly.
#