From: Rimon B. <ba...@cs...> - 2003-01-27 23:02:11
|
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. |