Data issues with Django and Apache

Discussion in 'Python' started by John Gordon, Aug 14, 2011.

  1. John Gordon

    John Gordon Guest

    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
    B is for Basil, assaulted by bears
    -- Edward Gorey, "The Gashlycrumb Tinies"
    John Gordon, Aug 14, 2011
    #1
    1. Advertising

  2. 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
    > 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.
    --
    DR.
    Daniel Roseman, Aug 14, 2011
    #2
    1. Advertising

  3. John Gordon

    John Gordon Guest

    In <> Daniel Roseman <> writes:

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


    I know. But trimming the code down to where it would be fit for posting
    is a moderately big job and I'm somewhat pressed for time. I was just
    hoping that someone would recognize the problem from the few symptoms I
    gave.

    --
    John Gordon A is for Amy, who fell down the stairs
    B is for Basil, assaulted by bears
    -- Edward Gorey, "The Gashlycrumb Tinies"
    John Gordon, Aug 15, 2011
    #3
  4. John Gordon

    John Gordon Guest

    In <j27bde$dlr$> John Gordon <> writes:

    > 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.


    The problem turned out to be a class variable that contained a time filter
    with the "current" time.

    But since it was a class variable, it was only evaluated once upon import
    and its idea of "now" was forever frozen at that moment, so it always
    compared as being less than any of the lock records that were passed in.

    I changed it to be a class method that constructs and returns a new time
    filter whenever it is called.

    Thanks for everyone's help!

    --
    John Gordon A is for Amy, who fell down the stairs
    B is for Basil, assaulted by bears
    -- Edward Gorey, "The Gashlycrumb Tinies"
    John Gordon, Aug 16, 2011
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Nagu
    Replies:
    2
    Views:
    406
  2. John Posner

    Question on Django and Django Book

    John Posner, Nov 13, 2010, in forum: Python
    Replies:
    0
    Views:
    311
    John Posner
    Nov 13, 2010
  3. eGenix Team: M.-A. Lemburg
    Replies:
    0
    Views:
    135
    eGenix Team: M.-A. Lemburg
    Jun 18, 2013
  4. Gary Roach
    Replies:
    0
    Views:
    111
    Gary Roach
    Sep 1, 2013
  5. Gary Roach
    Replies:
    0
    Views:
    131
    Gary Roach
    Jan 2, 2014
Loading...

Share This Page