<p>aiohttp рд╕рд░реНрд╡рд░: run_app coroutine?</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рджрд┐рд╕ре░ 2019  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: aio-libs/aiohttp

рдХрд╣рд╛рдиреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдореЗрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:

async with ClientSession() as session:
    await web.run_app(app)

рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рдкреВрд░реЗ рдЬреАрд╡рди рдХреЗ рджреМрд░рд╛рди рдПрдХ aniohttp рдЧреНрд░рд╛рд╣рдХ рд╕рддреНрд░ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрджрд░реНрдн рдкреНрд░рдмрдВрдзрдХ рдХреА рддрд░рд╣ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЗрддрдиреЗ рдкрд░ред

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░

рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрджрд░реНрдн рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдЕрдВрджрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ aniohttp рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

    async def on_startup_wrapper(app):
        app["aiohttp_client_session"] = await ClientSession().__aenter__()

    async def on_cleanup_wrapper(app):
        await app["aiohttp_client_session"].__aexit__(None, None, None)

    app.on_startup.append(on_startup_wrapper)
    app.on_cleanup.append(on_cleanup_wrapper)

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдЧрд░реНрд╡ рдирд╣реАрдВ рд╣реИред

рдЬрд╛рд╣рд┐рд░ рд╣реИ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ run_app рд╕рд╛рде рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж _run_app рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди _ ред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ AppRunner _run_app рд╕реЗ рдХреБрдЫ рдХреЛрдб рдЦрд╛ рд╕рдХреЗ, рдХрд┐рд╕реА рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ _run_app рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐:

runner = AppRunner(app, ...)
await runner.setup(host, path, sock, port)  # Doing most of _run_app current code here
async with Something() as something:
    app["something"] = something
    await runner.run_forever()  # The while True of the current _run_app

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ? рдХреНрдпрд╛ рдореБрдЭреЗ рдПрдХ рдкреАрдЖрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП? рдпрд╛ рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реВрдБ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрд░реЗ @JulienPalard , рдХреНрдпрд╛ рдЖрдк рд╕рдлрд╛рдИ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ? https://docs.aiohttp.org/en/stable/web_advanced.html#cleanup -context

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛?

async def init_session_ctx(app):
    async with ClientSession() as session:
        app["aiohttp_client_session"] = session
        try:
            yield
        finally:
            del app["aiohttp_client_session"]

app.cleanup_ctx.append(init_session_ctx)

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрд░реЗ @JulienPalard , рдХреНрдпрд╛ рдЖрдк рд╕рдлрд╛рдИ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ? https://docs.aiohttp.org/en/stable/web_advanced.html#cleanup -context

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛?

async def init_session_ctx(app):
    async with ClientSession() as session:
        app["aiohttp_client_session"] = session
        try:
            yield
        finally:
            del app["aiohttp_client_session"]

app.cleanup_ctx.append(init_session_ctx)

рдореИрдВ рдбреЙрдХреНрдЯрд░ рдХреЛ рдкрдврд╝рддреЗ рд╣реБрдП рдХреНрд▓реАрдирдЕрдк_рдПрдХреНрдЯрдПрдХреНрд╕ рд╕реЗ рдЪреВрдХ рдЧрдпрд╛, рдзрдиреНрдпрд╡рд╛рдж!

рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рджреЛ рд╕рдВрджрд░реНрдн рдкреНрд░рдмрдВрдзрдХ рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ, on_startup рдФрд░ on_cleanup рдмрдЬрд╛рдп cleanup_ctx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЭреЗ 18 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП 13 рдирдИ рд▓рд╛рдЗрдиреЗрдВ рджреА рдЧрдИрдВ, рдФрд░ рдореИрдВ рдЕрдм рдирд╣реАрдВ рд╣реВрдВ __aenter__ рдФрд░ __aexit__ рдЦреБрдж рдХреЛ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ, рд╣рд╛рдБред

рдпрд╣ рд╢рд╛рдпрдж рдХрд╣реАрдВ рд╕реЗ рдПрдХ рд▓рд┐рдВрдХ рдпрд╛рдж рдЖрддреА рд╣реИ, рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП on_startup рд╢рд╛рдпрдж рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП?

рдХреНрдпрд╛ рдЖрдк рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЦреЛрдЬ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЖрдк рдбреЙрдХреНрдЯрд░ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рдЧрдд рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kbaston picture kbaston  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dcramer picture dcramer  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alxpy picture alxpy  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

deckar01 picture deckar01  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Smosker picture Smosker  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ