Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 16, 2019 08:47:22

kmvpython
Зарегистрирован: 2018-11-29
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему reader.readline() не корректно работает?

Добрый день.
Есть код:

hh = 1
while True:
print(hh)
line = await reader.readline()
print(hh)
if not line:
break
else:
print(f'{line}')
print(hh)
hh = hh + 1
print('close')
writer.close()

Код печатает значение переменной hh.
Потом читает line = await reader.readline()
Печатает значение переменной hh
Потом проверяет наличие данных в line
Если данных нет, то выход из цикла, если есть то печатает значение line
Потом печатает значение переменной hh.
Потом увеличивает счетчик и повторяет цикл заново.

Выяснилось следующее: когда в line заканчиваются данные await их все равно ждет, но так как их там больше нет и не будет соединение зависает.

Почему такой пример в документации на сайте docs.python.org указан как рабочий, а у меня не работает?

Офлайн

#2 Янв. 16, 2019 10:43:07

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Почему reader.readline() не корректно работает?

kmvpython
Почему такой пример в документации на сайте docs.python.org указан как рабочий, а у меня не работает?
не смог найти такой пример на сайте, можете дать полную ссылу?

.
kmvpython
line = await reader.readline()
выражение после await должно быть awaitable объектом. подробнее тут https://docs.python.org/3/library/asyncio-task.html#asyncio-awaitables
вы уверены что ваш reader(.readline()?) являеться таковым?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Янв. 16, 2019 10:45:53)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version