Size: a a a

2019 December 30

ТЮ

Темиржан Юсупов in Python KZ
A͊ ̵̘̮̙̱ͦ͛͒̚͢i̱̟͙̗͂̀̽̅ͬ͢b̠͎̯̽̍
Попробуй задать таймаут
Хорошая идея, спасибо
источник
2019 December 31

SA

Sultan Abilda in Python KZ
Темиржан Юсупов
Всех с наступающим!

Ребят, подскажите пожалуйста куда можно копать чтобы решить проблему. Есть простой скрипт который через requests делает GET запрос, потом полученный html отдаёт BeautifulSoup. Запросов много, и в какой-то момент скрипт просто останавливается, после этого ничего не происходит. Try/except не помог, никакой ошибки похоже нет. Скрипт работает через раз, на один запуск он может сделать все нужные запросы, на второй может остановиться где-то посередине.

Спасибо заранее)
Возможно дело в том что пул connection-ов закончился. В реализации requests создается ограниченное количество соединений. То есть к примеру выделяются 10 портов через которые будут создаваться соединения. И когда ты пытаешься сделать большее количество запросов, остальные запросы ждут своей очереди пока соединение не закроется и в пуле не появится свободное.
источник

SA

Sultan Abilda in Python KZ
Sultan Abilda
Возможно дело в том что пул connection-ов закончился. В реализации requests создается ограниченное количество соединений. То есть к примеру выделяются 10 портов через которые будут создаваться соединения. И когда ты пытаешься сделать большее количество запросов, остальные запросы ждут своей очереди пока соединение не закроется и в пуле не появится свободное.
Чаще всего такое происходит когда ты используешь stream=True response = requests.get(url, stream=True) и не закрываешь после запроса соединения.
источник

SA

Sultan Abilda in Python KZ
То есть надо делать response.close()
источник

SA

Sultan Abilda in Python KZ
А вообще как вариант можешь это решение попробовать
https://stackoverflow.com/a/10115553
источник

A

Abay in Python KZ
Как пул соединений может закончится у клиента ? Плюс как я понимаю он использует стандартную синхронную реализацию requests
источник

SA

Sultan Abilda in Python KZ
Abay
Как пул соединений может закончится у клиента ? Плюс как я понимаю он использует стандартную синхронную реализацию requests
Есть такой header - keep-alive. Который говорит серверу чтобы тут не закрывал соединение, чтобы клиент мог переиспользовать его.
источник

SA

Sultan Abilda in Python KZ
Так вот по дефолту requests добавляет его для оптимизации.
Теперь представь. Что у тебя в пуле есть 2 доступных соединения.
Ты делаешь запрос на google.com с keep-alive. То есть ты держишь соединение открытым. Запрос уже прошел, но соединение будет открыто чтобы ты мог продолжить сессию не пересоздавая его.
источник

SA

Sultan Abilda in Python KZ
Ты делаешь ещё запрос к примеру на fb.com, этим самым забирая второе соединение. На третий раз когда ты хочешь сделать запрос к примеру на github.com, тебе придется ждать пока одно из двух соединений не освободится.
источник

A

A͊ ̵̘̮̙̱ͦ͛͒̚͢i̱̟͙̗͂̀̽̅ͬ͢b̠͎̯̽̍ in Python KZ
Sultan Abilda
Ты делаешь ещё запрос к примеру на fb.com, этим самым забирая второе соединение. На третий раз когда ты хочешь сделать запрос к примеру на github.com, тебе придется ждать пока одно из двух соединений не освободится.
Наверняка он парсит 1 сайт
источник

A

A͊ ̵̘̮̙̱ͦ͛͒̚͢i̱̟͙̗͂̀̽̅ͬ͢b̠͎̯̽̍ in Python KZ
Темиржан Юсупов
Всех с наступающим!

Ребят, подскажите пожалуйста куда можно копать чтобы решить проблему. Есть простой скрипт который через requests делает GET запрос, потом полученный html отдаёт BeautifulSoup. Запросов много, и в какой-то момент скрипт просто останавливается, после этого ничего не происходит. Try/except не помог, никакой ошибки похоже нет. Скрипт работает через раз, на один запуск он может сделать все нужные запросы, на второй может остановиться где-то посередине.

Спасибо заранее)
Скинь пример кода, тогда и можно будет чекнуть
источник

SA

Sultan Abilda in Python KZ
Ну я делаю предположение и предлагаю варианты
источник

ТЮ

Темиржан Юсупов in Python KZ
A͊ ̵̘̮̙̱ͦ͛͒̚͢i̱̟͙̗͂̀̽̅ͬ͢b̠͎̯̽̍
Скинь пример кода, тогда и можно будет чекнуть
Парсится 1 сайт. Всем спасибо за помощь. Мне помог вариант с timeout. Но если честно непонятно почему requests сам не выкидывает timeout после большого кол-ва времени.
источник

DL

Daniyar Lyakhov in Python KZ
Темиржан Юсупов
Парсится 1 сайт. Всем спасибо за помощь. Мне помог вариант с timeout. Но если честно непонятно почему requests сам не выкидывает timeout после большого кол-ва времени.
https://2.python-requests.org//en/latest/user/quickstart/#timeouts

Nearly all production code should use this parameter in nearly all requests. Failure to do so can cause your program to hang indefinitely:
источник
2020 January 01

DL

Daniyar Lyakhov in Python KZ
источник

К

Кir in Python KZ
Предлагаю выпить не а Python 2 не чокаясь!
источник
2020 January 02

M

Musa in Python KZ
Всем привет! Сколько уже на питоне пилите ребята?
источник

АА

Алихан Амандык in Python KZ
2 года с лишним
источник

SA

Sultan Abilda in Python KZ
источник

D

Danen in Python KZ
Разница между 0 и 0.5 большая
источник