Заметил странный баг, объяснения которому не могу найти.
Вот аналог оригинального скрипта:
import time
import pandas as pd
while True:
url = 'some_site.com'
try:
df = pd.read_json(url)
time.sleep(1)
except Exception as error:
print(error)
continue
print(df)
В какой-то момент времени скрипт зависает: в консоль ничего не выводиться даже ошибки, но сама консоль работает. Кто-нибудь может дать объяснение этому явлению?
Дмитрий, по указанному адресу расположены данные в json формате, которые свободно предоставляются сайтом. Когда скрипт подвисает, в консоль ничего не выводиться: ни ошибка, ни таблица, хотя, когда я просматриваю эту страницу в браузере, данные присутствуют.
Дмитрий, Я вас немного не понимаю. Скрипт перестает работать насовсем. Он не оживает через несколько секунд. И ошибка о том, что превышено время ожидание ответа от сервера не возникает.
Дмитрий, вопрос решил благодаря вам. Вы навели меня на мысль о том, что подвисает не мой цикл, а непосредственно сервер. Когда метод .read_json обращается по адресу к серверу, сервер может не ответить, но у этого метода нет атрибута timeout, поэтому он бесконечно ждет ответа и цикл не перезапускается. После того как сервер очнется, он уже не видит запрос. Чтобы решить проблему я использовал это: pandas.DataFrame(resuests.get(url, timeout=1).json()). После этого except уже сможет поймать ошибку timeout и повторить цикл. Все работает.
Бесконечный цикл без таймаута, сожрет очень быстро всю твою память, от того и тупит, ставь в конце цикла time.sleep(1) что бы снизить нагрузку на процессор