Можно ли корректно завершить работу при использовании ProcessPoolExecutor? Я попытался добавить обработчик сигнала, но он, похоже, не перехватывает SIGTERM.
from datetime import datetime
import os
import signal
import time
from apscheduler.schedulers.blocking import BlockingScheduler
def tick():
print('Tick! The time is: %s' % datetime.now())
def sig_handler(signum, frame):
print('Caught signal!')
def ticks():
signal.signal(signal.SIGTERM, sig_handler)
for i in range(10):
tick()
time.sleep(1)
if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_executor('processpool')
scheduler.add_job(tick, 'interval', seconds=3)
print('PID: {}'.format(os.getpid()))
print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit):
pass
print('Exiting')