@aybekko97

Как правильно запустить приложение на Gunicorn?

Хотел распараллелить запросы клиентов на телеграм бота с помощью gunicorn. Использую aiohttp в качестве сервера. При запуске с одним worker-ом работает нормально, но, если worker-ов больше чем один, не запускаются. Можно ли запустить ту часть, где тренируется модель только один раз, потом во всех workers использовать ее.

Большую часть кода в боте я убрал, так как они ничего не значат.

Один worker:
37dc016dce004b45b47c738bc025f218.png

Несколько worker-ов:
ab0d5dfb018942af82eddca457256ad0.png
#bot.py

# -------------------------------------------------------------------------------------------------------
model.train()
Здесь тренируется модель, которая будет что-то предсказывать.
# -------------------------------------------------------------------------------------------------------

bot = telebot.AsyncTeleBot(token, threaded=True)

# Хэндлер на команды /start и /help
@bot.message_handler(func=lambda message: True, commands=['help', 'start'])
def welcome_message(message):
    bot.send_message(message.chat.id, "Привет"
                     parse_mode="Markdown")

bot.remove_webhook()
bot.set_webhook(url=WEBHOOK_URL_BASE+WEBHOOK_URL_PATH,
                certificate=open(WEBHOOK_SSL_CERT, 'r'))

bot.skip_pending = True


#serv.py

from aiohttp import web

import telebot
from bot import bot

app = web.Application()

# Process webhook calls
async def handle(request):
    if request.match_info.get('token') == bot.token:
        request_body_dict = await request.json()
        update = telebot.types.Update.de_json(request_body_dict)
        bot.process_new_updates([update])
        return web.Response()
    else:
        return web.Response(status=403)

app.router.add_post('/{token}/', handle)
  • Вопрос задан
  • 394 просмотра
Решения вопроса 1
@dmtrrr
Backend developer
для aiohttp не нужен gunicorn
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы