I'm writing a Django Middleware class that I want to execute only once at startup, to initialise some other arbritary code. I've followed the very nice solution posted by sdolan here, but the "Hello" message is output to the terminal twice. E.g.
from django.core.exceptions import MiddlewareNotUsed
from django.conf import settings
print "Hello world"
raise MiddlewareNotUsed('Startup complete')
Django version 1.3, using settings 'config.server'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[22/Jul/2011 15:54:36] "GET / HTTP/1.1" 200 698
[22/Jul/2011 15:54:36] "GET /static/css/base.css HTTP/1.1" 200 0
Don't do it this way.
You don't want "middleware" for a one-time startup thing.
You want to execute code in the top-level
urls.py. That module is imported and executed once.
from django.confs.urls.defaults import * from my_app import one_time_startup urlpatterns = ... one_time_startup()