This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author ilian
Recipients ilian
Date 2021-07-28.16:18:43
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1627489123.42.0.553634869406.issue44764@roundup.psfhosted.org>
In-reply-to
Content
The idea is to provide a way for graceful shutdown so that if an interruption occurs all async tasks are given a certain time to finish before we exit the process.

Please take a look at the provided example -> https://gist.github.com/IlianIliev/9aba04a74a4faddf0749533205d3b001

If the interruption happens during an await (if we use `await asyncio.sleep(5)`), all works correctly. The exception is raised to the root level and we do the graceful shutdown on line 37.

But if the interruption happens during a normal execution (`time.sleep()`) it is raised at the currently running line and this way breaks the function without any chances or recovery. 
While `time.sleep` is not that widely used, the same problem occurs if we have any other long-running code e.g. iterating over a big list.

This was found while looking for a way to provide a graceful shutdown for the grpcio server -> https://github.com/grpc/grpc/issues/26123

Is it possible to change the behaviour so the exception is raised on a higher level when sync tasks are executed in async context?
History
Date User Action Args
2021-07-28 16:18:43iliansetrecipients: + ilian
2021-07-28 16:18:43iliansetmessageid: <1627489123.42.0.553634869406.issue44764@roundup.psfhosted.org>
2021-07-28 16:18:43ilianlinkissue44764 messages
2021-07-28 16:18:43iliancreate