From: Marius S. <ma...@li...> - 2003-01-27 23:26:07
|
Hi Rimon, I think you are right, the problem seems to be with the pickling. As soon as I set session_dir.BINARY_MODE to 0 the session handling started to work! Now I will try to find where exactly is the problem, I will let you know as soon as I find something... Marius Rimon Barr wrote: > Hi Marius, > > Thanks for sending the example, however I'm still having trouble > replicating your problem. For me, your example works in *both* cases. I'm > using python 2.2.1 under redhat linux, running apache and invoking spyce > via CGI. > > Basically, my feeling is that this is not related to spyce per-se, but > rather that it has something to do with how this is all coded in Python. > The first place that I would test is the pickling code embedded in the > get() and set() methods of the session_dir. Can you simply pickle the > structure you sent me into a string, and back? Do this as a simple test in > Python, unrelated to Spyce. Next, I would insert some debug print > statements in the get() and set() methods of the session_dir handler to be > confident of the execution path. Just basic debugging... > > Perhaps you could even take Spyce out of the loop and try to invoke the > session handler code in Python using your structures. Let me know what you > come up with. This still sounds a little too mysterious. > > All the best, > Rimon. > > > On Mon, 27 Jan 2003, Marius Scurtescu wrote: > > >>Hi, >> >>I added [[ session.finish() ]] to the end of my Spyce file >>and there is no difference. It looks like no exception >>is thrown... >> >>The problem seems to be related to the complexity/depth of >>the tree structure I am saving on the session. If it goes >>beyond some point then it won't be save. >> >>Check the attachment. The way it is right now it should >>show the problem. If you comment out line 6 and uncomment >>line 7 then the problem is gone. The only difference is >>that on line 7 the data structure is shorter with a '','' >> >>I am running Spyce on Windows 2000, Python 2.2.1, >>Apache 1.3.24, running in CGI mode. FastCGI is not >>installed as far as I know. >> >>Any clues? >> >>Thanks, >>Marius >> >> >>>-------- Original Message -------- >>>Subject: Re: [Spyce-users] autosession >>>Date: Sat, 25 Jan 2003 23:04:27 -0500 (EST) >>>From: Rimon Barr <ba...@cs...> >>>Reply-To: Rimon Barr <rb...@co...> >>>To: Marius Scurtescu <ma...@li...> >>>CC: spy...@li... >>> >>> >>> >>>>I am trying to use session management as in the autosession.py example >>>>file. I have to save a large tree structure on the session. The example >>>>works like a charm, but when I was trying to save my object it did not >>>>work. The session was not saved and on every request a new session was >>>>started. After a long while I realized that Spyce did not like the size >>>>of my object. It did not complain, it just did not save it. If my tree >>>>structure is bigger than around 200 characters then it won't be saved. Is >>>>there a setting somewhere to increase this limit? >>> >>>Marius, >>> >>>Have a look at .../spyce/modules/session.py. In there, search for >>>session_dir. That's the session handler that you are using. The problem is >>>somewhere in the set() method. Notice how there is a big try-except block >>>around everything? Well, in the except part, there is a raise at end. So, >>>any exception should be re-raised and propagated upwards. Namely, under >>>normal circumstances, you should be seeing the error in setting the >>>session state. >>> >>>In the case of automatic session management, the set() function is called >>>from the session module's finish() method (near the top of the same file), >>>which is called during the finish portion of the request processing. For >>>details on how modules work, refer to: >>> http://spyce.sourceforge.net/doc-mod_new.html >>> >>>During this finish processing, each of the modules are finish()ed in >>>opposite order of their initialization, but any exceptions that they might >>>throw are simply thrown on the floor. Modules should really be written so >>>that they do NOT throw exceptions in the start() or finish() methods. >>>(Perhaps this should be changed, but there are good reasons motivating >>>this.) >>> >>>In any case, returning to your problem... The problem is that you are not >>>seeing this exception in the output. The reason is that it's occuring >>>during finalization. To see what's really going on temporarily add the >>>following line to the end of your Spyce file. >>> >>> [[ session.finish() ]] >>> >>>... and let us know. >>> >>>All the best, >>>Rimon. |