Как запустить сервер flask одновременно с ботом?
Если просто использовать два .run()
, то ничего не выйдет, так как дальнейшее выполнение программы после использования любой из них не идет. Как это исправить?
Ответы (1 шт):
Ты можешь через 1 сервер запусить два своих модуля. Сделай 2 метода, один, что инициализирует flask def create_fapp(name): app = Flask(name) и второй с твоим ботом(хз что за либу ты используешь). Создай метод start, в который передашь свои методы по созданию приложений и через uvicorn или guvicorn запустишь приложения через метод. Запусти этот метод uvicorn.run(app.main:start)
Это самый простой способ, если нагрузка на сервер небольшая и тебе не нужно маштабироваться.
Оно может выглядеть примерно вот так:
import uvicorn
from discord.ext import commands
import asyncio
from your_flask_app import app
from your_discord_bot import bot
async def start_flask_app():
uvicorn.run(app, host="0.0.0.0", port=5000)
async def start_discord_bot():
await bot.start("token")
async def main():
tasks = [start_flask_app(), start_discord_bot()]
await asyncio.gather(*tasks)
if __name__ == "__main__":
asyncio.run(main())