Message336014
I agree with Yuri.
`Task.set_exception()` (let's assume it works) is very dangerous: if cancellation exception doesn't bubble up from coroutine code there is a very high chance to get broken invariants and not-released resources.
The same situation is possible with classic threads: killing a thread without unwinding a call stack leads to locked mutexes etc.
Regarding distinguishing explicit cancellation from timeout exhausting: it can be done with current asyncio design by using a flag. Take a look on async_timeout context manager, __aexit__() implementation: https://github.com/aio-libs/async-timeout/blob/master/async_timeout/__init__.py#L88-L97 |
|
| Date |
User |
Action |
Args |
| 2019-02-19 20:22:58 | asvetlov | set | recipients:
+ asvetlov, chris.jerdonek, yselivanov, Ilya.Kulakov |
| 2019-02-19 20:22:58 | asvetlov | set | messageid: <1550607778.39.0.180683899459.issue32363@roundup.psfhosted.org> |
| 2019-02-19 20:22:58 | asvetlov | link | issue32363 messages |
| 2019-02-19 20:22:58 | asvetlov | create | |
|