fix workers

This commit is contained in:
clowwindy 2014-05-24 19:16:21 +08:00
parent e113479a80
commit ea451344ff
4 changed files with 16 additions and 2 deletions

View file

@ -11,3 +11,4 @@ script:
- python test.py -c test/aes.json
- python test.py -c test/salsa20.json
- python test.py -c test/server-multi-passwd.json
- python test.py -c test/workers.json

View file

@ -299,7 +299,13 @@ def main():
sys.exit()
import signal
signal.signal(signal.SIGTERM, handler)
# master
for tcp_server in tcp_servers:
tcp_server.server_close()
for udp_server in udp_servers:
udp_server.close()
for child in children:
os.waitpid(child, 0)
else:

View file

@ -137,6 +137,7 @@ class UDPRelay(object):
self._cache = lru_cache.LRUCache(timeout=timeout,
close_callback=self._close_client)
self._client_fd_to_server_addr = lru_cache.LRUCache(timeout=timeout)
self._closed = False
addrs = socket.getaddrinfo(self._listen_addr, self._listen_port, 0,
socket.SOCK_DGRAM, socket.SOL_UDP)
@ -251,7 +252,7 @@ class UDPRelay(object):
self._eventloop = eventloop.EventLoop()
self._eventloop.add(server_socket, eventloop.POLL_IN)
last_time = time.time()
while True:
while not self._closed:
try:
events = self._eventloop.poll(10)
except (OSError, IOError) as e:
@ -274,11 +275,17 @@ class UDPRelay(object):
last_time = now
def start(self):
if self._closed:
raise Exception('closed')
t = threading.Thread(target=self._run)
t.setName('UDPThread')
t.setDaemon(False)
t.start()
self._thread = t
def close(self):
self._closed = True
self._server_socket.close()
def thread(self):
return self._thread

View file

@ -6,5 +6,5 @@
"timeout":300,
"method":"aes-256-cfb",
"local_address":"127.0.0.1",
"workers": 2
"workers": 4
}