Запуск django проекта с ТГ-ботом внутри
Есть небольшая АПИ на джанго.
Запускаю стандартно через python manage.py runserver на локальном машине. Работает.
Захотел включить в проект ТГ-бота. Для начала самый простой функционал:
import telebot
API_KEY = API_KEY_BOT
bot = telebot.TeleBot(API_KEY)
@bot.message_handler(content_types=['text'])
def start(message):
bot.send_message(message.from_user.id, 'Hello')
bot.remove_webhook()
bot.polling(none_stop=True, interval=0)
Так вот. Проект без бота запускается и работает. Бот отдельно от проекта тоже запускается и работает.
Но, когда я добавляю файл с ботом в проект, то при python manage.py runserver просто тормозится на
Watching for file changes with StatReloader
Performing system checks...
Когда я комментирую 2 последние строки из бота - ожидаемо, сервер стартует, но без бота)) Подскажите, каким образом мне лучше поступить, чтобы в джанго проекте ещё и бот работал?
Ответы (1 шт):
Запускайте бот в отдельном потоке-демоне. Вызов bot.polling блокирующий и потому занимает поток и не дает django выполняться (т.е. слушать порт, обрабатывать входящие запросы и т.д.):
from threading import Thread
...
def bot_thread():
bot.remove_webhook()
bot.polling(none_stop=True, interval=0)
t = Thread(target=bot_thread)
t.setDaemon(True)
t.start()
Но имейте ввиду, что лучше веб часть и бота разделить, об этом подробней тут.