Django + apache & mod_wsgi: having to restart apache after changes

Question:

I configured my development server this way:

Ubuntu, Apache, mod_wsgi, Python 2.6

I work on the server from another computer connected to it.

Most of the times the changes don’t affect the application unless I restart Apache.
In some cases the changes take effect without restarting the webserver, but after let’s say 3 or 4 page loads the application might behave like it used to behave previous to the changes.

Until now I just reloaded everytime apache as I have the development server here with me, but HELL after a while got so annoying. How can I avoid this?

I can’t work with the development server as I need an environment that is as close as possible as the production one.

Thanks

Asked By: nemesisdesign

||

Answers:

My suggestion is that you run the application in daemon mode.
This way you won’t be required to restart apache,
just touch my_handler.wsgi and the daemon will know to restart the app. The apache httpd will not be only yours (in production) so it is fair not to restart it on every update.

Answered By: vonPetrushev

Apache loads Django environment when starting and keep running it even when source is changed.

I suggest you to use Django ‘runserver’ (which automatically restarts on changes) in heavy development sessions, unless you need some Apache-specific features (such as multi-thread).

Note also that changes in templates do not require the restart of the web server.

Answered By: Don

No changes require you to RESTART. You simply need to reload using “sudo /etc/init.d/apache2 reload”. Which I have aliased in my bashrc to ‘a2reload’.

function a2reload (){
sudo /etc/init.d/apache2 reload
}
Answered By: RoosterJuice