Project module loaded twice
|Reported by:||rginda@…||Owned by:||nobody|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
I have some initialization code in my project's __init__.py (the one from the same directory as settings.py), and I've notice that it's executed *twice* for each thread. I added the following lines to my __init__.py...
print "*** thread: %s, %s" % (thread.get_ident(), __name__) traceback.print_stack()
$ ~/dist/mark1/bin/mark1-django-ctl.sh runserver ginda1:8080 *** thread: -1208932672, mark1 File "manage.py", line 6, in <module> import mark1.settings File "/home/au/au10010/dist/mark1/django/mark1/__init__.py", line 53, in <module> traceback.print_stack() *** thread: -1208932672, mark1. File "manage.py", line 14, in <module> execute_manager(mark1.settings) File "/opt/ark/sw/python2.6/lib/python2.6/site-packages/django/core/management/__init__.py", line 338, in execute_manager File "/opt/ark/sw/python2.6/lib/python2.6/site-packages/django/core/management/__init__.py", line 316, in setup_environ File "/home/au/au10010/dist/mark1/django/mark1/__init__.py", line 53, in <module> traceback.print_stack()
It seems like it's loaded for the first time when manage.py loads the settings file, and second time from <http://code.djangoproject.com/browser/django/trunk/django/core/management/__init__.py#L331>.
Notice that the second time it's loaded, the module is called 'mark1.', rather than just 'mark1'. If I switch the management code to...
__import__(project_name) project_module = sys.modules[project_name]
...then my module is only loaded once.