[IMP] netsvc/netrpc/http_server: introduce timeout for blocking server calls, sort of a busy wait
bzr revid: odo@openerp.com-20100713152244-9jdrem6b2xn50ltt
This commit is contained in:
parent
472693f703
commit
5d16cc715b
|
@ -318,6 +318,13 @@ class Server:
|
||||||
__is_started = False
|
__is_started = False
|
||||||
__servers = []
|
__servers = []
|
||||||
|
|
||||||
|
# we don't want blocking server calls (think select()) to
|
||||||
|
# wait forever and possibly prevent exiting the process,
|
||||||
|
# but instead we want a form of polling/busy_wait pattern, where
|
||||||
|
# _server_timeout should be used as the default timeout for
|
||||||
|
# all I/O blocking operations
|
||||||
|
_busywait_timeout = 0.5
|
||||||
|
|
||||||
|
|
||||||
__logger = logging.getLogger('server')
|
__logger = logging.getLogger('server')
|
||||||
|
|
||||||
|
|
|
@ -120,6 +120,7 @@ class BaseHttpDaemon(threading.Thread, netsvc.Server):
|
||||||
self.server = ThreadedHTTPServer((interface, port), handler)
|
self.server = ThreadedHTTPServer((interface, port), handler)
|
||||||
self.server.vdirs = []
|
self.server.vdirs = []
|
||||||
self.server.logRequests = True
|
self.server.logRequests = True
|
||||||
|
self.server.timeout = self._busywait_timeout
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
netsvc.Logger().notifyChannel(
|
netsvc.Logger().notifyChannel(
|
||||||
'httpd', netsvc.LOG_CRITICAL,
|
'httpd', netsvc.LOG_CRITICAL,
|
||||||
|
|
|
@ -115,8 +115,7 @@ class TinySocketServerThread(threading.Thread,netsvc.Server):
|
||||||
try:
|
try:
|
||||||
self.running = True
|
self.running = True
|
||||||
while self.running:
|
while self.running:
|
||||||
timeout = self.socket.gettimeout()
|
fd_sets = select.select([self.socket], [], [], self._busywait_timeout)
|
||||||
fd_sets = select.select([self.socket], [], [], timeout)
|
|
||||||
if not fd_sets[0]:
|
if not fd_sets[0]:
|
||||||
continue
|
continue
|
||||||
(clientsocket, address) = self.socket.accept()
|
(clientsocket, address) = self.socket.accept()
|
||||||
|
|
Loading…
Reference in New Issue