def main():
with open('.bncbot.pid', 'w') as pid_file:
pid_file.write(str(os.getpid()))
conn = Conn(bot.HANDLERS)
original_sigint = signal.getsignal(signal.SIGINT)
def handle_sig(sig, frame):
if sig == signal.SIGINT:
if conn:
asyncio.run_coroutine_threadsafe(conn.shutdown(), conn.loop)
signal.signal(signal.SIGINT, original_sigint)
elif sig == signal.SIGHUP:
if conn:
asyncio.run_coroutine_threadsafe(conn.shutdown(True), conn.loop)
signal.signal(signal.SIGINT, handle_sig)
signal.signal(signal.SIGHUP, handle_sig)
restart = conn.run()
if restart:
conn = None
time.sleep(1)
os.chdir(original_wd)
args = sys.argv
for f in [sys.stdout, sys.stderr]:
f.flush()
os.execv(sys.executable, [sys.executable] + args)
评论列表
文章目录