You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何同时启动aiogram v3轮询Bot与aiohttp Web服务器

问题描述

我有一个运行在轮询模式下的aiogram v3 Bot,需要添加处理器来处理外部应用的请求,我使用aiohttp服务器监听外部请求,处理后向Bot用户发送通知:

import asyncio
from aiogram import Bot, Dispatcher
from aiohttp import web


app = web.Application()

async def bot_start():
    bot = Bot(TOKEN, parse_mode='HTML')
    dp = Dispatcher()
    await dp.start_polling(bot)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.create_task(bot_start())
    loop.run_until_complete(web.run_app(app, host="127.0.0.1", port=5555))

目前Bot可以启动轮询,但Web服务器无法运行,需要在单个项目中同时启动这两个进程。
注:Bot必须运行在轮询模式,而非Webhook。

解决方案

将两个应用作为异步函数在独立任务中运行:

async def bot_start():
    bot = Bot(TOKEN, parse_mode='HTML')
    dp = Dispatcher()
    await dp.start_polling(bot)

async def webserver_start():
    app = web.Application()
    runner = web.AppRunner(app)
    await runner.setup()
    site = web.TCPSite(runner, "127.0.0.1", 5555)
    await site.start()

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    task1 = loop.create_task(bot_start())
    task2 = loop.create_task(webserver_start())
    loop.run_until_complete(asyncio.gather(task1, task2))

内容的提问来源于stack exchange,提问作者swserg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:13:16