Ваш способ создать задачу перед запуском события l oop в порядке, но только если run_app
не будет установлен и использовать другое событие l oop.
Лучший способ - создать задачи или другие асинхронные c объекты после запуска события l oop. Таким образом, вы убедитесь, что созданные объекты прикреплены к активному действующему событию l oop.
. В вашем случае лучший способ сделать это - использовать on_startup hook:
async def pre_init(app):
await _send_proactive_message()
async def make_app():
app = web.Application()
app.router.add_post("/api/messages", messages)
app.router.add_get("/api/notify", notify)
app.on_startup.append(pre_init)
return app
web.run_app(make_app())