Data issues with Django and Apache

Daniel Roseman daniel at
Sun Aug 14 20:12:15 CEST 2011

On Sunday, 14 August 2011 03:20:30 UTC+1, John Gordon  wrote:
> I'm devleoping a website using the Django framework along with Apache,
> and I'm seeing some odd data issues.
> During the course of navigating through the website content, a user
> will cause the creation of some data records with a limited lifespan.
> These data records have a create_dt field which is automatically set to
> the time that they were created, and an expire_dt field which is equal
> to create_dt plus ten minutes.
> The problem is that I get conflicting results as to whether these temporary
> records have reached their expiration date, depending if I search for them
> via an Apache web call or if I do the search locally from a python shell.
> And to make it weirder, the conflicts go away if I stop and restart the
> Apache server, although any new records created after this point will still
> exhibit the issue.
> Are there any known "gotchas" when using Django with Apache?  It almost
> seems like Apache is maintaining its own persistent session or something,
> and restarting Apache causes the session to be flushed.
> -- 
> John Gordon                   A is for Amy, who fell down the stairs
> gor... at              B is for Basil, assaulted by bears
>                                 -- Edward Gorey, "The Gashlycrumb Tinies"

Well, without seeing any code, it's hard to tell. And Apache (with mod_wsgi) is the recommended deployment method, so you can't really say there are gotchas.

My guess is that you have not understood that server processes - and this is true on the dev server as well as on Apache - are not the same as requests. That is, server processes are long-lasting, and one process may end up serving tens or hundreds of requests before being recycled. So, if you have any code that runs at process startup - such as default values in class definitions or at module level - it will persist for all requests served by that process.

Like I say, though, it would really help if you showed the relevant code.

More information about the Python-list mailing list