Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 16 additions & 5 deletions csp_eventlet/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from __future__ import with_statement
import eventlet
from eventlet import wsgi
import cgi
Expand Down Expand Up @@ -179,10 +178,17 @@ def _timeout(self, is_teardown):
# SPEC TODO: No mention in csp spec (Draft 0.4 Nov 19, 2009) of
# session timeout. Choosing twice the comet duration or
# 60 seconds when du = 0 (polling mode)
with eventlet.timeout.Timeout(self.conn_vars['du'] * 2 or 60, False):
if self._activity_queue.get():
try:
if eventlet.timeout.with_timeout(self.conn_vars['du'] * 2 or 60, self._activity_queue.get):
break
continue
except eventlet.timeout.Timeout, e:
pass
# XXX remove the following:
#with eventlet.timeout.Timeout(self.conn_vars['du'] * 2 or 60, False):
# if self._activity_queue.get():
# break
# continue
if is_teardown:
self.teardown()
else:
Expand Down Expand Up @@ -310,8 +316,13 @@ def comet_request(self, environ, start_response):
self._comet_request_lock.release()
duration = self.conn_vars['du']
if duration:
with eventlet.timeout.Timeout(duration, False):
self._comet_request_channel.get()
try:
eventlet.timeout.with_timeout(duration, self._comet_request_channel.get)
except eventlet.timeout.Timeout, e:
pass
# XXX remove the following:
#with eventlet.timeout.Timeout(duration, False):
# self._comet_request_channel.get()

headers = [ ('Content-type', self.conn_vars['ct']) ,
('Access-Control-Allow-Origin','*') ]
Expand Down