Я не понимаю, как использовать аргумент result
.
result
- это просто значение, которое будет возвращено asyncio.sleep
по истечении указанного времени.Это полезно, если вы заменяете что-то, что возвращает фактические данные, на sleep()
, например, для целей тестирования вы можете сразу указать возвращаемое значение.Например:
data = await read_from_database()
...
if mocking:
read_from_database = functools.partial(
asyncio.sleep, 0.1, result='no data')
else:
async def read_from_database():
... real implementation ...
Когда следует использовать аргумент loop
?
Аргумент loop
с Python 3.7 устарел ипланируется удалить .Это было полезно в Python 3.5 и более ранних версиях, когда не гарантировалось, что возвращаемое значение asyncio.get_event_loop()
будет текущим циклом событий, а циклом событий, связанным с потоком.Поскольку в течение времени жизни потока можно запускать несколько циклов событий, правильный код должен был распространять явное loop
везде.Если вы работали в цикле событий не по умолчанию, вам нужно было указать от loop
до asyncio.sleep
и большинство других асинхронных функций и конструкторов.Этот стиль часто встречается в старых уроках и в настоящее время активно не поощряется .