anyway,
the poit raised by rb has some consequences we may want to think
about.
1) because clients ignore cookies this means there is a proliferation
of session files that are lost unless the xmlrpc server is told
explicitly to forget sessions. This means if one does not need
sessions one should use
def call():
session.forget()
return service()
2) should we provide a cookie aware xmlrpc cllient with web2py?
3) should we allow other mechanisms to id sessions? For example a uuid
in the URL?
On Aug 12, 2:23 am, Yarko Tymciurak <[email protected]> wrote:
> Ahem....
>
> "Knock, knock!" --- says the browser...
> "Whose there?" --- says the server...
>
> If the request (browser) identifies itself with information given it by the
> server as a continuation from a recent identification, then the normally
> stateless nature of the web get's state, established by the client
> identifying itself to the server.... typically this is done by cookies.
>
> Client not saving session id? Then client cannot establish it's identity
> --- eg. server has no session to "restore" --- this is a fresh (e.g.
> stateless) session.
>
> Seehttp://en.wikipedia.org/wiki/Session_management for a bit of a
> conceptual overview.
>
> On Wed, Aug 12, 2009 at 1:14 AM, rb <[email protected]> wrote:
>
> > Thx kindly, Massimo. I'll check the links out... but...
>
> > >Once more, the issue is not with web2py. The issue is with your
> > client. It does not support cookies, hence it does not support
> > sessions.
>
> > Errr... no, that is not the issue that I'm pointing at. If "sessions
> > remain and do not expire" means that in between accesses the session
> > global variable is pickled to the disk and then later reconstituted
> > from the disk or else pickled into cookies and sent to the client,
> > then I have a problem with this definition. I don't think my data is
> > necessarily pickle-able.
>
> > I guess I misread/misunderstood paragraphs like:
>
> > The option masterapp=None, by default, tells web2py to try to
> > retrieve an
> > existing session for the application with name in request.application,
> > in the
> > running application.
>
> > to imply that there remained a *running process* that kept the session
> > variable (and hence my data) instantiated in between calls. I'm new to
> > this web app thing.
>
> > So, thx for the clarification. I'll either try to hack the code you
> > referenced or else I'll just end up using the web2py server as a data
> > server and keep the business logic in the thick client.
>
> > ---
> > Rb
>
> > On Aug 11, 10:39 pm, mdipierro <[email protected]> wrote:
> > > Correction. You must use this client:
> >http://code.activestate.com/recipes/501148/
> > > not this client:
> >http://fotinakis.com/blog/blog/2008/cookies-xmlrpc-and-ssl/
>
> > > Massimo
>
> > > On Aug 12, 12:19 am, mdipierro <[email protected]> wrote:
>
> > > > Once more, the issue is not with web2py. The issue is with your
> > > > client. It does not support cookies, hence it does not support
> > > > sessions.
>
> > > > If you use this client they should work:
>
> > > >http://fotinakis.com/blog/blog/2008/cookies-xmlrpc-and-ssl/
>
> > > > Massimo
>
> > > > On Aug 11, 7:31 pm, rb <[email protected]> wrote:
>
> > > > > Well I need more than just cookies. I can't serialize the app
> > > > > inbetween each call. I need a working process, which has active data
> > > > > structures (database tables, dictionaires, etc).
>
> > > > > Is there anyway for an app to talk out through web2py to a client?
>
> > > > > I had (incorrectly) understood that sessions stick around and remain.
> > > > > Even if a session object is cookized in between calls doesn't the
> > docs
> > > > > say that the session stuff remains? The manual says:
>
> > > > > ===
> > > > > 4.8 session
> > > > > ------------------
> > > > > is another instance of the Storage class. Whatever is
> > > > > stored into session for example:
>
> > > > > session.myvariable="hello"
>
> > > > > can be retrieved at a later time:
>
> > > > > a=session.myvariable
>
> > > > > as long as the code is executed within the same session by the same
> > > > > user
> > > > > (provided the user has not deleted session cookies and the session
> > > > > did not
> > > > > expire). Because session is a Storage object, trying to access an
> > > > > attribute/key
> > > > > that has not been set does not raise an exception, it returns None
> > > > > instead.
> > > > > ===
>
> > > > > Thus I can store myvariable into session and retrieve it at a later
> > > > > time. What the manual _should_ say, if I understand you now, is that
> > > > > the global variable "session" is pickled between each call into a
> > > > > cookie and unserialized with each subsequent call. If your protocol,
> > > > > eg xmlrpc does not use cookies then you can forget about sessions
> > > > > being used to store info to be retrieved at a later time.
>
> > > > > Argh! This is upsetting. I was thinking that session (and some
> > > > > pythonic process) remained running in between calls. Argh.
>
> > > > > Thx for the link, I'll check it out. (fingers crossed)
>
> > > > > ===
>
> > > > > On Aug 11, 4:22 pm, mdipierro <[email protected]> wrote:
>
> > > > > > This is not a problem with the server but with the client.
> > > > > > You may try the cookie aware xmlrpc client proposed here:
>
> > > > > >http://code.activestate.com/recipes/501148/
>
> > > > > > Or you need to pass an extra key to the function calls and is that
> > to
> > > > > > retrieve a session.
>
> > > > > > Massimo
>
> > > > > > On Aug 11, 6:09 pm, rb <[email protected]> wrote:
>
> > > > > > > Further, I added a :
>
> > > > > > > session.hello = "hello, world"
>
> > > > > > > in order to see if it just didn't want to hold onto MY data. No
> > dice.
> > > > > > > session.hello is gone on the next call as well.
>
> > > > > > > ---
>
> > > > > > > On Aug 11, 3:02 pm, rb <[email protected]> wrote:
>
> > > > > > > > In my think-client xmlrpc protocol to web2py svr code I am
> > trying to
> > > > > > > > maintain data in the session global variable but it doesn't
> > seem to
> > > > > > > > hold it. For example I first start by creating a document-form
> > (tree
> > > > > > > > of datatables), cached in a data structure, as an attribute of
> > > > > > > > session. Here's the code:
>
> > > > > > > > from gluon.tools import Service
>
> > > > > > > > service = Service(globals())
>
> > > > > > > > def call():
> > > > > > > > return service()
>
> > > > > > > > @service.xmlrpc
> > > > > > > > def xrBeginDocFrm( frmName):
> > > > > > > > ''' create table records and push xrInitRecord down to all
> > tables.
> > > > > > > > '''
> > > > > > > > if session.frmz == None:
> > > > > > > > session.frmz = {}
> > > > > > > > if not session.frmz.has_key("frmName"):
> > > > > > > > session.frmz[frmName] = rna.DocFrm(db, frmName)
>
> > > > > > > > Then later I call the svr to get the table column definitions:
>
> > > > > > > > @service.xmlrpc
> > > > > > > > def xrGetColDefs(frmName, tblInstName):
> > > > > > > > tblInst = session.frmz[frmName].GetTblInst(tblInstName)
> > > > > > > > return tblInst.GetColDefs()
>
> > > > > > > > but I find that session does not have a frmz attribute. I can
> > walk the
> > > > > > > > debuger through the svr code so I can see that the functions
> > are
> > > > > > > > getting called, but when I inspect session it contains nothing.
>
> > > > > > > > I thought sessions stick around forever? I thought that session
> > was
> > > > > > > > the place to keep my own attributes that will live on (between
> > xmlrpc
> > > > > > > > calls).
>
> > > > > > > > Heeeeelp!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---