support workers
This commit is contained in:
parent
eb8fccad79
commit
df7614f26c
2 changed files with 18 additions and 2 deletions
|
@ -47,6 +47,7 @@ import struct
|
|||
import logging
|
||||
import getopt
|
||||
import encrypt
|
||||
import os
|
||||
import utils
|
||||
import udprelay
|
||||
|
||||
|
@ -176,7 +177,7 @@ def main():
|
|||
config_path = utils.find_config()
|
||||
try:
|
||||
optlist, args = getopt.getopt(sys.argv[1:], 's:p:k:m:c:',
|
||||
['fast-open'])
|
||||
['fast-open', 'workers:'])
|
||||
for key, value in optlist:
|
||||
if key == '-c':
|
||||
config_path = value
|
||||
|
@ -194,7 +195,7 @@ def main():
|
|||
config = {}
|
||||
|
||||
optlist, args = getopt.getopt(sys.argv[1:], 's:p:k:m:c:',
|
||||
['fast-open'])
|
||||
['fast-open', 'workers='])
|
||||
for key, value in optlist:
|
||||
if key == '-p':
|
||||
config['server_port'] = int(value)
|
||||
|
@ -206,6 +207,8 @@ def main():
|
|||
config['method'] = value
|
||||
elif key == '--fast-open':
|
||||
config['fast_open'] = True
|
||||
elif key == '--workers':
|
||||
config['workers'] = value
|
||||
except getopt.GetoptError:
|
||||
utils.print_server_help()
|
||||
sys.exit(2)
|
||||
|
@ -217,6 +220,7 @@ def main():
|
|||
config_port_password = config.get('port_password', None)
|
||||
config_timeout = config.get('timeout', 600)
|
||||
config_fast_open = config.get('fast_open', False)
|
||||
config_workers = config.get('workers', 1)
|
||||
|
||||
if not config_key and not config_path:
|
||||
sys.exit('config not specified, please read '
|
||||
|
@ -249,6 +253,17 @@ def main():
|
|||
udprelay.UDPRelay(config_server, int(port), None, None, key,
|
||||
config_method, int(config_timeout), False).start()
|
||||
|
||||
if int(config_workers) > 1:
|
||||
if os.name == 'posix':
|
||||
# TODO only serve in workers, not in master
|
||||
for i in xrange(0, int(config_workers) - 1):
|
||||
r = os.fork()
|
||||
if r == 0:
|
||||
break
|
||||
else:
|
||||
logging.warn('worker is only available on Unix/Linux')
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
|
|
|
@ -125,4 +125,5 @@ optional arguments:
|
|||
-m METHOD encryption method, for example, aes-256-cfb
|
||||
-c CONFIG path to config file
|
||||
--fast-open use TCP_FASTOPEN, requires Linux 3.7+
|
||||
--workers WORKERS number of workers, available on Unix/Linux
|
||||
'''
|
Loading…
Reference in a new issue