Ich benutze Supervisor, um ein Skript wie folgt zu starten. Wenn der Supervisor gestoppt wird oder unterbrochen wird, versuche ich, das Skript ordnungsgemäß zu beenden. Dies ist meine aktuellen CodePython Process Pool Executor Herunterfahren auf Signal
import concurrent.futures
import random
import os
import signal
import sys
executor = concurrent.futures.ProcessPoolExecutor(max_workers=2)
some_flag = True
def some_func():
while some_flag:
executor.submit(print_some_num)
def print_some_num():
print("From worker :{}".format(os.getpid()))
print(random.randint(0,10))
def handler(arg1, arg2):
print("Got interrupt")
some_flag = False
sys.exit("Run for ur life")
#executor.shutdown(wait = False) ----> not working
print("Shutdown")
signal.signal(signal.SIGTERM,handler)
signal.signal(signal.SIGINT,handler)
if __name__ == '__main__':
some_func()
Dies funktioniert gut, und jetzt bin ich verwirrt, wenn ich über executor.shutdown lesen (wait = True/False). Also habe ich das versucht und ich konnte den Executor nicht herunterfahren (es hängt einfach). Bitte helfen Sie mir mit diesen Fragen aus
1) what does executor.shutdown do that sys.exit() doesn't do.
2) What is advisable in production environment? If executor shutdown is required, please help me fix the issue with shutdown.
Bitte fügen Sie Ihre Kommentare hinzu, wenn es besser gemacht werden kann. – Anandan