kopia lustrzana https://github.com/cirospaciari/socketify.py
fix forks
rodzic
620b853607
commit
23f6e26d26
|
@ -2,7 +2,6 @@ from socketify import App
|
||||||
import os
|
import os
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
|
|
||||||
|
|
||||||
def run_app():
|
def run_app():
|
||||||
app = App()
|
app = App()
|
||||||
app.get("/", lambda res, req: res.end("Hello, World!"))
|
app.get("/", lambda res, req: res.end("Hello, World!"))
|
||||||
|
@ -16,15 +15,19 @@ def run_app():
|
||||||
app.run()
|
app.run()
|
||||||
|
|
||||||
|
|
||||||
def create_fork():
|
pid_list = []
|
||||||
n = os.fork()
|
|
||||||
# n greater than 0 means parent process
|
|
||||||
if not n > 0:
|
|
||||||
run_app()
|
|
||||||
|
|
||||||
|
|
||||||
# fork limiting the cpu count - 1
|
# fork limiting the cpu count - 1
|
||||||
for i in range(1, multiprocessing.cpu_count()):
|
for _ in range(1, multiprocessing.cpu_count()):
|
||||||
create_fork()
|
pid = os.fork()
|
||||||
|
# n greater than 0 means parent process
|
||||||
|
if not pid > 0:
|
||||||
|
run_app()
|
||||||
|
break
|
||||||
|
pid_list.append(pid)
|
||||||
|
|
||||||
run_app() # run app on the main process too :)
|
run_app() # run app on the main process too :)
|
||||||
|
|
||||||
|
# sigint everything to gracefull shutdown
|
||||||
|
import signal
|
||||||
|
for pid in pid_list:
|
||||||
|
os.kill(pid, signal.SIGINT)
|
|
@ -771,15 +771,20 @@ class ASGI:
|
||||||
server.listen(port_or_options, handler)
|
server.listen(port_or_options, handler)
|
||||||
server.run()
|
server.run()
|
||||||
|
|
||||||
def create_fork():
|
pid_list = []
|
||||||
n = os.fork()
|
|
||||||
# n greater than 0 means parent process
|
|
||||||
if not n > 0:
|
|
||||||
run_task()
|
|
||||||
|
|
||||||
# fork limiting the cpu count - 1
|
# fork limiting the cpu count - 1
|
||||||
for _ in range(1, workers):
|
for _ in range(1, workers):
|
||||||
create_fork()
|
pid = os.fork()
|
||||||
|
# n greater than 0 means parent process
|
||||||
|
if not pid > 0:
|
||||||
|
run_task()
|
||||||
|
break
|
||||||
|
pid_list.append(pid)
|
||||||
|
|
||||||
run_task() # run app on the main process too :)
|
run_task() # run app on the main process too :)
|
||||||
|
|
||||||
|
# sigint everything to gracefull shutdown
|
||||||
|
import signal
|
||||||
|
for pid in pid_list:
|
||||||
|
os.kill(pid, signal.SIGINT)
|
||||||
return self
|
return self
|
||||||
|
|
|
@ -310,22 +310,20 @@ def execute(args):
|
||||||
fork_app.listen(AppListenOptions(port=port, host=host), listen_log)
|
fork_app.listen(AppListenOptions(port=port, host=host), listen_log)
|
||||||
fork_app.run()
|
fork_app.run()
|
||||||
|
|
||||||
# now we can start all over again
|
pid_list = []
|
||||||
def create_fork(_):
|
# fork limiting the cpu count - 1
|
||||||
n = os.fork()
|
for _ in range(1, workers):
|
||||||
|
pid = os.fork()
|
||||||
# n greater than 0 means parent process
|
# n greater than 0 means parent process
|
||||||
if not n > 0:
|
if not pid > 0:
|
||||||
run_app()
|
run_app()
|
||||||
return n
|
break
|
||||||
|
pid_list.append(pid)
|
||||||
|
|
||||||
# run in all forks
|
run_app() # run app on the main process too :)
|
||||||
pid_list = list(map(create_fork, range(1, workers)))
|
|
||||||
|
|
||||||
# run in this process
|
|
||||||
run_app()
|
|
||||||
# sigint everything to gracefull shutdown
|
# sigint everything to gracefull shutdown
|
||||||
import signal
|
import signal
|
||||||
|
|
||||||
for pid in pid_list:
|
for pid in pid_list:
|
||||||
os.kill(pid, signal.SIGINT)
|
os.kill(pid, signal.SIGINT)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -500,7 +500,7 @@ class WSGI:
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def run(self, workers=1):
|
def run(self, workers=1):
|
||||||
def run_app():
|
def run_task():
|
||||||
server = _WSGI(
|
server = _WSGI(
|
||||||
self.app,
|
self.app,
|
||||||
self.options,
|
self.options,
|
||||||
|
@ -513,15 +513,20 @@ class WSGI:
|
||||||
server.listen(port_or_options, handler)
|
server.listen(port_or_options, handler)
|
||||||
server.run()
|
server.run()
|
||||||
|
|
||||||
def create_fork():
|
pid_list = []
|
||||||
n = os.fork()
|
|
||||||
# n greater than 0 means parent process
|
|
||||||
if not n > 0:
|
|
||||||
run_app()
|
|
||||||
|
|
||||||
# fork limiting the cpu count - 1
|
# fork limiting the cpu count - 1
|
||||||
for i in range(1, workers):
|
for _ in range(1, workers):
|
||||||
create_fork()
|
pid = os.fork()
|
||||||
|
# n greater than 0 means parent process
|
||||||
|
if not pid > 0:
|
||||||
|
run_task()
|
||||||
|
break
|
||||||
|
pid_list.append(pid)
|
||||||
|
|
||||||
run_app() # run app on the main process too :)
|
run_task() # run app on the main process too :)
|
||||||
|
|
||||||
|
# sigint everything to gracefull shutdown
|
||||||
|
import signal
|
||||||
|
for pid in pid_list:
|
||||||
|
os.kill(pid, signal.SIGINT)
|
||||||
return self
|
return self
|
||||||
|
|
Ładowanie…
Reference in New Issue