@KitCat12

Как правильно запускать бота Telegram через Flask Server?

У меня есть админка для бота, там есть блок с 3 кнопками - запуск, рестарт и остановка бота. Эти кнопки посылают запросы на Flask роут, для каждой кнопки отдельный. Как мне лучше запускать в этих роутах бота? Через multiprocessing или как?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
WolfInChains
@WolfInChains
Вот так можно. Но стоит учитывать что если 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"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы