Как обнаружить разъединение в python-запросах на сохранение соединения? - PullRequest
0 голосов
/ 26 марта 2019

Я использую python-запросы для подключения к прямой трансляции. После подключения я использую iter_lines для просмотра данных по мере их поступления. Я пытаюсь обнаружить разрыв соединения, когда это происходит, в настоящее время безуспешно.

В настоящее время я обнаруживаю разрывы соединения, ожидая прибытия новой линии максимум 30 секунд, а если этого не происходит, я перезапускаю соединение. Проблема в том, что я пропускаю данные, поступающие в течение этих 30 секунд.

В качестве теста я попытался отключить Wi-Fi в середине и посмотреть, изменится ли что-нибудь (например, Response.status_code), но это не так.

Пример кода:

r = requests.get(url, stream=True)

while True:
     time.sleep(1)
     print(r.status_code)

Я ожидал, что при подключении отобразится 200, и SOME_SORT_OF_ERROR, когда я выключу Wi-Fi, но я продолжаю видеть 200.

Кто-нибудь знает способ обнаружить разрыв?

1 Ответ

0 голосов
/ 26 марта 2019

Как говорит python, документирует, что поддержка активности в сеансе на 100% автоматическая.Вы должны прочитать строки следующим образом:

r = requests.get(url, stream=True)

for line in r.iter_lines():
    if line:
        print json.loads(line)

Подробнее об этом можно прочитать здесь

...