Since gluon.main and gluon.fileutils are being imported before 
gevent's monkey.patch_all() is run, the sessions were getting mixed up.

Here's the code I used that verified the issue (found on this forum):

def index():
import time
from gluon import current
print current.request.uuid
time.sleep(10)
print current.request.uuid
return dict(done='done!')

Load this method in 2 different browsers within 10 seconds and you'll see 
that the uuids are out of sync.

It should be:
A
B
A
B

But instead you get:
A
B
B
B

To fix this, I created a separate file that just starts the gevent server. 
 Essentially, before importing the gluon modules, I run:
from gevent import monkey
monkey.patch_all()

After running the test again, I get:
A
B
A
B

So, should we remove gevent from anyserver.py and add gevent_server.py? 
 This would save others from encountering the same issue that I did.

-- 



Reply via email to