Вот так можно. Но стоит учитывать что если Flask сервер упадет, то упадет и бот.
from multiprocessing import Process
class BotProcess:
def __init__(self):
self.process = None
def get(self) -> Process:
return self.process
def is_alive(self) -> bool:
if self.process is not None and self.process.is_alive():
return True
else:
return False
def stop(self) -> None:
self.process.terminate()
self.process = None
def start(self, process: Process) -> None:
self.process = process
self.process.start()
bot_process = BotProcess()
@app.route("/bot-start", methods=["GET"])
def bot_start():
if not bot_process.is_alive():
bot_process.start(Process(target=start_bot))
return "Bot started"
else:
return "Bot is already running"
@app.route("/bot-restart", methods=["GET"])
def bot_restart():
if bot_process.is_alive():
bot_process.stop()
bot_process.start(Process(target=start_bot))
return "Bot restarted"
else:
return "Bot is not running"
@app.route("/bot-stop", methods=["GET"])
def bot_stop():
if bot_process.is_alive():
bot_process.stop()
return "Bot stopped"
else:
return "Bot is not running"