33from proxypool .processors .server import app
44from proxypool .processors .getter import Getter
55from proxypool .processors .tester import Tester
6- from proxypool .setting import CYCLE_GETTER , CYCLE_TESTER , API_HOST , API_THREADED , API_PORT , ENABLE_SERVER , \
6+ from proxypool .setting import CYCLE_GETTER , CYCLE_TESTER , API_HOST , \
7+ API_THREADED , API_PORT , ENABLE_SERVER , IS_PROD , APP_PROD_METHOD , \
78 ENABLE_GETTER , ENABLE_TESTER , IS_WINDOWS
89from loguru import logger
910
@@ -56,7 +57,42 @@ def run_server(self):
5657 if not ENABLE_SERVER :
5758 logger .info ('server not enabled, exit' )
5859 return
59- app .run (host = API_HOST , port = API_PORT , threaded = API_THREADED )
60+ if IS_PROD :
61+ if APP_PROD_METHOD == 'gevent' :
62+ try :
63+ from gevent .pywsgi import WSGIServer
64+ except ImportError as e :
65+ logger .exception (e )
66+ else :
67+ http_server = WSGIServer ((API_HOST , API_PORT ), app )
68+ http_server .serve_forever ()
69+
70+ elif APP_PROD_METHOD == 'tornado' :
71+ try :
72+ from tornado .wsgi import WSGIContainer
73+ from tornado .httpserver import HTTPServer
74+ from tornado .ioloop import IOLoop
75+ except ImportError as e :
76+ logger .exception (e )
77+ else :
78+ http_server = HTTPServer (WSGIContainer (app ))
79+ http_server .listen (API_PORT )
80+ IOLoop .instance ().start ()
81+
82+ elif APP_PROD_METHOD == "meinheld" :
83+ try :
84+ import meinheld
85+ except ImportError as e :
86+ logger .exception (e )
87+ else :
88+ meinheld .listen ((API_HOST , API_PORT ))
89+ meinheld .run (app )
90+
91+ else :
92+ logger .error ("unsupported APP_PROD_METHOD" )
93+ return
94+ else :
95+ app .run (host = API_HOST , port = API_PORT , threaded = API_THREADED )
6096
6197 def run (self ):
6298 global tester_process , getter_process , server_process
@@ -71,13 +107,13 @@ def run(self):
71107 if ENABLE_GETTER :
72108 getter_process = multiprocessing .Process (
73109 target = self .run_getter )
74- logger .info (f'starting getter, pid{ getter_process .pid } ...' )
110+ logger .info (f'starting getter, pid { getter_process .pid } ...' )
75111 getter_process .start ()
76112
77113 if ENABLE_SERVER :
78114 server_process = multiprocessing .Process (
79115 target = self .run_server )
80- logger .info (f'starting server, pid{ server_process .pid } ...' )
116+ logger .info (f'starting server, pid { server_process .pid } ...' )
81117 server_process .start ()
82118
83119 tester_process and tester_process .join ()
0 commit comments