ЁЯРЮ рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
рдЬрдм рдПрдЖрдИрдУрдПрдЪрдЯреАрдЯреАрдкреА рд╕реЗ рдХреБрдЫ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реАрдХ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдПрд╕рд┐рдВрдХреЛ рдЕрдкрд╡рд╛рдж рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдХреБрдЫ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ (рдЬреИрд╕реЗ рдХрд┐ рдПрдпрд┐рд░реБрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ stop_on_unhandled_errors=True
) рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреВрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ ClientResponse
рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб рд╣реИ:
ЁЯТб рдкреБрди: рдЙрддреНрдкрдиреНрди
Aiohttp рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓реАрдХ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред
Behavior рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░
рд▓реАрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ open()
рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ .close()
ing рдпрд╣ рдПрдХ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдмрдврд╝рд╛рддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рд╕реЛрд░реНрд╕ рд▓реАрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ - рдореБрдЭреЗ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред
On рдкрд╛рдпрдерди рдХрд╛ рдЖрдкрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг
$ python --version
Python 3.8.6
Y рдЖрдкрдХрд╛ aiohttp / yarl / multidict рд╡рд┐рддрд░рдг рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг
$ python -m pip show aiohttp
Name: aiohttp
Version: 3.6.2
`` `рд╕рд╛рдВрддреНрд╡рдирд╛
$ рдЕрдЬрдЧрд░ рдПрдо рдкрд╛рдЗрдк рд╢реЛ рдмрд╣реБрдЖрдпрд╛рдореА
рдирд╛рдо: рдмрд╣реБрдЖрдпрд╛рдореА
рд╕рдВрд╕реНрдХрд░рдг: 4.7.6
```console
$ python -m pip show yarl
Name: yarl
Version: 1.5.1
ЁЯУЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн
cjrh / aiorun # 56
рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдВред
рдЕрд╕реВрдЪреАрдмрджреНрдз рд╕рдВрд╕рд╛рдзрди рдПрдХ рдЧрдВрднреАрд░ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд╣реА рдХреЛрдб рд▓рд┐рдЦрдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, asyncio рдЦреБрдж рд╣реА call_exception_handler()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП async рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдкрд╛рдВрдбрд┐рддреНрдп рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рддреЛ рдЖрдк stop_on_unhandled_errors=False
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ, рдлрд┐рд░ рдЕрд╕рд▓реА рдЕрдкрд╡рд╛рдж рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ __del__
рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдирд╣реАрдВ? рдпрд╣ рдбреАрдмрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ "рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ", рдЦрд╛рд╕рдХрд░ рдЬрдм рдмрдЧ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ; source_traceback
рд╕рдВрджрд░реНрдн рдХреБрдВрдЬреА рдЕрд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ, рдФрд░ рдпрд╣ asyncio рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдХреЗ undocumented рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрддреНрд░реАрдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрдореГрддрд┐ рд▓реАрдХ рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдореИрдВ рдпрд╣ рднреА рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЕрд╕рд┐рдирд┐рдпреЙ рдиреЗ рдЕрдирд╡рд╛рдЗрдЯреЗрдб рдХреЛрд░рдЖрдЙрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП call_exception_handler()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдВ рдХрд┐рдпрд╛ рд╣реИред рдЬрдм рдПрдХ рдЕрдирд╡рд╛рдЗрдЯреЗрдб рдХреЛрд░рдЖрдЙрдЯ рдХрдЪрд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ _PyErr_WarnUnawaitedCoroutine
ред
/* If `gen` is a coroutine, and if it was never awaited on,
issue a RuntimeWarning. */
if (gen->gi_code != NULL &&
((PyCodeObject *)gen->gi_code)->co_flags & CO_COROUTINE &&
gen->gi_frame->f_lasti == -1)
{
_PyErr_WarnUnawaitedCoroutine((PyObject *)gen);
}
рдЬреЛ warnings._warn_unawaited_coroutine()
:
void
_PyErr_WarnUnawaitedCoroutine(PyObject *coro)
{
/* First, we attempt to funnel the warning through
warnings._warn_unawaited_coroutine.
рдЬреЛ рдПрдХ рд░рдирдЯрд╛рдЗрдорд╡реЗрдпрд░ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд╣рд╛рдБ рдХрд╣реАрдВ рднреА call_exception_handler()
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ stdlib рдореЗрдВ call_exception_handler()
рдХрд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реВрдБ рдЬрд┐рд╕рдореЗрдВ exception
рд╕рдВрджрд░реНрдн рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдФрд░ рдлрд┐рд░ рд╕реЗ: рдпрджрд┐ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЬрд╛рдирд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рднреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ aiohttp рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдЖрдк рд╕рд╣реА рд╣реИрдВ, __del__
рдкрджреНрдзрддрд┐ рд╕реЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдЙрдард╛рдирд╛ рдПрдХ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдЕрднреНрдпрд╛рд╕ рд╣реИред
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдФрд░ рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Asyncio call_exception_handler()
рдХреЛ __del__
call_exception_handler()
рд╕реЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ , Task.__del__
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ: https://github.com/python/cpython/blob/master/Lib/nyncio/tasks.py # L139 -L148
рдЖрдк рд╕рд╣реА рд╣реИрдВ, source_traceback
https://docs.python.org/3/library/asyncio-eventloop.html?highlight=call_exception_handler#asynci.loop.call_exception_handler рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ
рдХреНрдпрд╛ рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/python/cpython/ рдкрд░ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдПрдБрдЧреЗ? рдореБрдЭреЗ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ / рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реБрдИред
рдФрд░ рдлрд┐рд░ рд╕реЗ: рдпрджрд┐ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЬрд╛рдирд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рднреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ aiohttp рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?
aiohttp рд╕реЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдврд╝рд╛ рдирд╣реАрдВ рд╣реИ __del__
рднреА, рдпрд╣ рдЕрдЬрдЧрд░ рдореЗрдВ рдмрд╕ рдЕрд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╕реНрддреБ finalizer рдХреЗ рдХреЙрд▓ indeterministic рд╣реИред
рдЕрд╕реНрдкрд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ ResourceWarning
рдмрдврд╝рд╛рддреА рд╣реИред рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: https://docs.python.org/3/library/warnings.html#default -warning- рдлрд╝рд┐рд▓реНрдЯрд░
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдмрд╣реБрдд рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреА рд╣реИ рдЕрдЧрд░ рд╡реЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдореМрдЬреВрдж рдирд╣реАрдВ рдереА, рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп file.close()
рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд╕реБрдВрджрд░ рд╕рдВрд╕рд╛рдзрди рд╕рдлрд╛рдИ, рдЖрджрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред ред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, file.close()
рд╕реЗ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ file.__del__
рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХреЙрд▓ рд╣реИред
рд▓реЗрдХрд┐рди asyncio рджреБрдирд┐рдпрд╛ рдореЗрдВ close()
рдмрд╣реБрдд рдмрд╛рд░ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ: рдпрд╣ рдПрдХ async рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ __del__
рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, transport.close()
protocol.connection_lost()
рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рд╕рд╛рджреЗ рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ; рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдФрд░ рднреА рдЦрд░рд╛рдм рд╣реИред
aiohttp рдореЗрдВ рд╕рд┐рдВрдХ / async рдлрд╛рдЗрдирд▓ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ; aiohttp 4.0 рдХреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рд▓рд┐рдП рд╕рдлрд╛рдИ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЦрд░рд╛рдм рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП call_exception_handler()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
Asyncio _does_
call_exception_handler()
__del__
рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПTask.__del__
рджреЗрдЦреЗрдВ
рдХрд╛рдлреА рд╣рдж рддрдХ, рдореИрдВ рдЙрд╕ рдХреЙрд▓ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред
рдХреНрдпрд╛ рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬрдЧрд░ / рдХрдлрд╝рди рдкрд░ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВрдЧреЗ?
рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдбреЙрдХреНрд╕, рдбреЙрдХрд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдХреБрдЫ рдЕрдиреНрдп рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрд╛, рдореИрдВрдиреЗ bpo-42347 рдмрдирд╛рдпрд╛ред
рдЗрд╕рд▓рд┐рдП рд╕рдлрд╛рдИ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЦрд░рд╛рдм рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдзрд┐рдХ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП call_exception_handler () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЬрдм рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдареАрдХ рд╕реЗ рд╕рд╛рдл рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ рдХрд┐ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░реЛрдХ рджреЗ, рдФрд░ рдореБрдЭреЗ рд╢реБрд░реВ рдореЗрдВ рдпрд╣ рднреА рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рд░рд┐рд╕рд╛рд╡ рдХрд╛ рдХрд╛рд░рдг рдерд╛ рдХрд┐ рдПрдпреЛрд░реБрди рд▓реВрдк рдХреЛ рд░реЛрдХ рд░рд╣рд╛ рдерд╛ред