Hi Simon,
Sorry for the poor explanation in my previous post.
Let me try to clarify this using a flow here:
-------------------------------------------------------------------------------
1st_web_request comes in to tell the server which person instances are to
be interested. because it involves hybrid_property, and query, so it needs
a session here, let's call it session_#1;
==>
entering a stage where session_#1 has to be active, or otherwise we will
lose sync ability to update those hybrid_property. At this stage session_#1
basically is just holding a bunch of queried associations of Person
instances and their names, and standing by, waiting for any update of
FirstName or LastName to construct a new hybrid_property of Full_Name on
the fly.
==>
Now we have 2nd_web_request coming in, which carries a thread-local session
object of its own, let's call it collectively session_#2.(by the way I'm
using cherrypy and built a plugin and tool to automatically bind a session
for each request) I plan to use this second session object(s) to hold a
bunch of Person(not just their names, in comparison to session_#2).

My design breaks down here, as I really am lost in how I can deal with two
differently cycled session objects. Or maybe this design itself is flawed?
Maybe I there is something I missed about session as a whole?


On Mon, Jun 30, 2014 at 2:57 AM, Simon King <si...@simonking.org.uk> wrote:

> I'm not sure I understand your application. Are you saying that you
> have Person instances that stay in memory for longer than a single web
> request?
>
> Simon
>
> On Sun, Jun 29, 2014 at 11:54 AM, Bao Niu <niuba...@gmail.com> wrote:
> > Hi Mike,
> > Thanks for your reply. In my case, the full_name attribute is a hybrid
> > property using query on firstName and lastName. When I construct a Person
> > instance, I need a session to query the names and build the full_name
> > attribute on the fly. So do you think I should remove this session
> > immediately after I have built full_name attribute? What if later on my
> > application changes this person's firstName? If the session is still
> alive
> > it will expire full_name attribute automatically, but if the session was
> > removed, there won't be any automatic update on those hybrid_property,
> > right?
> >
> > Doesn't this scenario justify a background thread?
> >
> >
> > On Sat, Jun 28, 2014 at 7:14 AM, Mike Bayer <mike...@zzzcomputing.com>
> > wrote:
> >>
> >>
> >> On 6/28/14, 7:13 AM, Bao Niu wrote:
> >>
> >> My situation is like this:
> >>
> >> I am developing a web application, which has a Person class, which has
> >> FirstName and LastName attributes. Now I want to build their full name
> >> attribute and make this full_name attribute queriable, by using
> >> hybrid_property, which entails query and hence session. This session for
> >> querying hybrid_property has its life cycle as long as that particular
> >> Person instance is active in memory, as in the running process the names
> >> might get changed, and need to communicate to the database.
> >>
> >> In the mean time, in this application I also need another Session
> instance
> >> to contain those Person instances themselves, and this Session instance
> has
> >> a quite different life cycle than the above one. I am using
> cherrypy.request
> >> to hold a thread-local session for this second purpose.
> >>
> >> Now it seems to me that both Session instances are necessary, I can't
> use
> >> one in place of the other. But because handling two sessions at the same
> >> time is inherently so confusing sometimes, I wonder if I am in the right
> >> direction? Is this generally considered bad? If it is, then how to deal
> with
> >> it? Thanks in advance.
> >>
> >>
> >> If this is a web application, having a session that isn't lifecycled to
> a
> >> request seems like it runs in some kind of background thread or
> something.
> >> Otherwise, if its some session that stays open in the cherrypy app
> while the
> >> app is doing nothing, and is only used by requests (somehow?  session
> >> shouldn't be accessed by multiple things at once) not serving requests,
> >> that's bad.   if you're using a Session as some kind offline cache,
> that's
> >> not what it's for and it won't do a good job of that because it isn't
> >> threadsafe.
> >>
> >> think more in terms of database transactions.     I use two sessions all
> >> the time when I want to separate transactions, a background job is
> working
> >> in a transaction for several seconds, but a second short transaction is
> used
> >> to write messages to a log table, so that I can see the log table grow
> from
> >> the outside while the long transaction keeps going.   But database
> >> transactions overall should be short, and never dormant waiting for
> >> something to happen, they should be burning through the work they have
> to do
> >> as fast as possible and completing.  So should your sessions.
> >>
> >> --
> >> You received this message because you are subscribed to a topic in the
> >> Google Groups "sqlalchemy" group.
> >> To unsubscribe from this topic, visit
> >> https://groups.google.com/d/topic/sqlalchemy/CVIkd-WQiDM/unsubscribe.
> >> To unsubscribe from this group and all its topics, send an email to
> >> sqlalchemy+unsubscr...@googlegroups.com.
> >>
> >> To post to this group, send email to sqlalchemy@googlegroups.com.
> >> Visit this group at http://groups.google.com/group/sqlalchemy.
> >> For more options, visit https://groups.google.com/d/optout.
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "sqlalchemy" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to sqlalchemy+unsubscr...@googlegroups.com.
> > To post to this group, send email to sqlalchemy@googlegroups.com.
> > Visit this group at http://groups.google.com/group/sqlalchemy.
> > For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "sqlalchemy" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sqlalchemy/CVIkd-WQiDM/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to