async def setup_services(bot: Bot):
# CREATING A CONNECTION POOL IN DATABASE
await db.create_pool()
# COMMANDS
await set_commands(bot=bot)
# LAUNCH NOTIFIER
notifier = Notifier(bot=bot)
await notifier.start_notifier()
async def on_startup(bot: Bot):
await bot.set_webhook(f'{BASE_WEBHOOK_URL}{WEBHOOK_PATH}')
await setup_services(bot=bot)
async def last_message(bot: Bot):
await bot.send_message(chat_id=Config.ADMIN_ID, text="<b>BOT STOPPED</b>")
await bot.session.close()
def main():
# ALL STUFFS FOR BOT
bot = Bot(token=Config.TOKEN_BOT, parse_mode=ParseMode.HTML)
dp = Dispatcher(bot=bot)
dp.startup.register(on_startup)
app = web.Application()
webhook_requests_handler = SimpleRequestHandler(dispatcher=dp, bot=bot)
webhook_requests_handler.register(app, path=WEBHOOK_PATH)
setup_application(app, dp, bot=bot)
# REGISTER HANDLERS
register_classes(dp=dp)
basic.register_handlers(dp=dp)
specialist.register_handlers(dp=dp)
admin.register_handlers(dp=dp)
try:
web.run_app(app, host=WEB_SERVER_HOST, port=WEB_SERVER_PORT)
except Exception as ex:
main_logger.critical(f"Bot stopped due to exception: {ex}", exc_info=True)
# await dp.start_polling(bot) # restart the bot
finally:
asyncio.run(last_message(bot=bot))
if __name__ == "__main__":
main()
Зачем ты вообще так криво стал делать, надо просто запустить dp.start_polling как рекомендовано в aiogram, а start_notifier перед этим запускать через dp.startup.register() или просто как create_task, не нужен тебе тут gather
ЗЫ ну и сразу разберись с webhook, прод боты лучше уж через него запускать
нам конечно уже угадывать, чё ты там понаписал?
import aiohttp
import asyncio
import time
async def get_time_zone(lat, lon):
url = f""
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
print(await response.text(), response.status)
async def main():
lat = 37.7749
lon = -122.4194
start = time.time()
for _ in range(10):
await get_time_zone(lat, lon)
await asyncio.sleep(1)
print("time: ", time.time()-start)
asyncio.run(main())
ну так не делай тупо gather, а делай один обычный цикл (или очередь), внутри которого запрос к сайту и asyncio.sleep(1) после него