Updates to fix errors under load.

This commit is contained in:
Paul J. Davis 2009-12-03 02:41:50 -05:00
parent f4f3429d15
commit 34db4a6669
2 changed files with 20 additions and 11 deletions

View File

@ -96,7 +96,7 @@ class Arbiter(object):
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
sock.bind(address)
sock.listen(64)
sock.listen(2048)
return sock
def run(self):

View File

@ -1,9 +1,10 @@
import BaseHTTPServer
import errno
import logging
import os
import select
import signal
import socket
import http
import util
@ -36,15 +37,23 @@ class Worker(object):
if ret[0]:
break
(conn, addr) = self.socket.accept()
log.info("Client connected: %s:%s" % addr)
conn.setblocking(1)
try:
self.handle(conn, addr)
except:
log.exception("Error processing request.")
finally:
conn.close()
# Accept until we hit EAGAIN
while True:
try:
(conn, addr) = self.socket.accept()
except socket.error, e:
if e[0] in [errno.EAGAIN, errno.EINTR]:
continue # Jump back to select
raise # Uh oh!
#log.info("Client connected: %s:%s" % addr)
conn.setblocking(1)
try:
self.handle(conn, addr)
except:
log.exception("Error processing request.")
finally:
conn.close()
def handle(self, conn, client):
while True: