Этот вопрос закрыт для ответов, так как повторяет вопрос Aiogram + aiohttp/FastAPI, как подружить?
nosemka
@nosemka
Middle Python Developer

Как запустить одновременно aiohttp web server + aiogram?

Здравствуйте, как я могу запустить вместе aiogram и веб сервер в aiohttp?
У нашего сервиса есть апи которое должно отправлять запрос на мой веб сервер и обработка должна происходить в боте.

Вот пример создания веб сервера
from aiohttp import web

async def hello(request):
    return web.Response(text="Hello, world")

app = web.Application()
app.add_routes([web.get('/helloworld', hello)])

async def run_server():
    web.run_app(app, port=5376)


Вот метод запуска бота
import asyncio

from aiogram.utils import executor
from aiogram.utils.executor import start_webhook

from aiohttp.web import run_app

from bot import dp, bot
from buttons.admin import register_admin_handler
from buttons.buyvpn import register_buttons_handler_vpn
from buttons.client.mainmenu.mainmenu import register_client_mainmenu
from buttons.extendvpn import register_buttons_handler_vpn_extend
from buttons.myvpns.myvpns import register_myvpns
from buttons.referal import register_referal_buttons_handler
from cfg import cfg
from handlers.admin import admin_register_handler
from handlers.client import client_register_handler
from server import run_server
from tasks.check_expire import register_tasks, register_exp_notify_3d, register_remove_exp_notify_db, \
    register_exp_notify_1d
import locale


async def on_startup(dp):
    await bot.set_webhook(cfg["WEBHOOK_URL"])
    loop = asyncio.get_event_loop()
    if cfg['tasks_enabled']:
        loop.create_task(register_tasks())
        loop.create_task(register_exp_notify_3d())
        loop.create_task(register_exp_notify_1d())
        loop.create_task(register_remove_exp_notify_db())

async def on_shutdown(dp):
    await bot.delete_webhook()
    await dp.storage.close()
    await dp.storage.wait_closed()

def main():
    locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8')
    print('Starting bot..')
    print('Registering handlers..')
    client_register_handler() # Регистрация клиентских слэш комманд. (handlers-client.py)
    admin_register_handler() # Регистрация админских слэш комманд.
    register_client_mainmenu() # Регистрация обработчика кнопок главного меню бота
    register_buttons_handler_vpn() # Регистрация обработчика покупки впна
    register_buttons_handler_vpn_extend() # Регистрация обработчика продления впна
    register_admin_handler() # Регистрация обработчика кнопок админ панели
    register_referal_buttons_handler() # Регистрация реферальной системы
    register_myvpns() # Регистрация управлением подписками (Мои подписки в главном меню)
    print('Handlers registered!')
    print('Starting bot polling..')
    if not cfg['webhook_enabled']:
        executor.start_polling(dp, skip_updates=True, on_startup=on_startup)
    else:
        start_webhook(
            dispatcher=dp,
            webhook_path=cfg['WEBHOOK_PATH'],
            on_startup=on_startup,
            on_shutdown=on_shutdown,
            skip_updates=True,
            host=cfg['WEBAPP_HOST'],
            port=cfg['WEBAPP_PORT'],
        )
        run_server()


if __name__ == '__main__':
    main()

При запуске происходит вот это
63f346173385c597076841.png

Я бы хотел просто создать веб сервер для вебхука и принятия запросов с апи и обрабатывать все в боте. Как это можно сделать. Сейчас вебхуки работают на нгроке.

Мне нужен пример кода как можно запустить это вместе. Только без aiogram v3 (кривая либа)
  • Вопрос задан
  • 969 просмотров
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы