From: Geoffrey T. <gta...@na...> - 2003-11-26 17:01:31
|
Ian Bicking wrote: > Sessions can be accessed from multiple threads, though usually that > would only happen when a browser was downloading dependent > files (e.g., > images), that were also served off WebKit. But you still > don't want to > put these in the session, because they aren't pickleable, and the > session persists over restarts by using pickle. It can also easily happen if someone clicks on a button or link twice, or if they click on one link and then on another before the first one has responded. This is more likely if some of your servlets take a bit of time to respond. We've run into an interesting issue where someone requests a servlet that takes a while to respond, then clicks on our logout button before the slow servlet has responded. Our logout code clears the session, which sometimes causes bugs in the long-running servlet which assumes that certain values are still in the session. These bugs can cause tracebacks that get emailed to the administrator but never show up in the user's browser. - Geoff |
From: Geoffrey T. <gta...@na...> - 2003-11-28 16:07:30
|
Max Ischenko wrote: > Aaron Held wrote: >> I usually create a dbpool and get /return a connection just when it >> is needed. The connections always exist, but they are shared between >> servlets. > > >> Lately I have been thinking that I should just create a new db >> connection in the __init__ and check it in awake, since pretty much >> every servlet uses the database. > > But this is dangerous because then db coon can be shared across > threads (servlets are shared, right?). Nope. Servlet instances are taken from a pool and a servlet instance can only be in use by a single thread at a time. Additional servlet instances are created as needed. (There are rarely-used flags that can change this behavior but what I described is the default.) - Geoff |
From: Max I. <ma...@uc...> - 2003-12-01 11:36:19
|
>>>Lately I have been thinking that I should just create a new db >>>connection in the __init__ and check it in awake, since pretty much >>>every servlet uses the database. >> >>But this is dangerous because then db coon can be shared across >>threads (servlets are shared, right?). > > > Nope. Servlet instances are taken from a pool and a servlet instance can > only be in use by a single thread at a time. Additional servlet instances > are created as needed. Wow. That's very good news. So, I can be sure that any servlet's instance variable won't be accessed by multiple threads, right? In contrary to session's data, which can be accessed by several threads sometimes (as Ian told). |
From: Geoffrey T. <gta...@na...> - 2003-12-01 16:45:54
|
Max Ischenko wrote: > > Wow. That's very good news. > > So, I can be sure that any servlet's instance variable won't be > accessed by multiple threads, right? Right. > > In contrary to session's data, which can be accessed by several > threads sometimes (as Ian told). Correct. - Geoff |