Python requests.get() не работает в цикле while

#python #https

#python #https

Вопрос:

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

Я поместил запрос get в цикл while и хочу запускать цикл while до тех пор, пока «LastModified» часть запроса не покажет, что URL-адрес был обновлен.

Когда я запускаю код, response он не меняется по сравнению с первоначальным запросом get за пределами цикла while, но я знаю, что URL-адрес был обновлен, поэтому цикл продолжается вечно.

Я напечатал lastUpdated и Now.date() в цикле for, оба выходят, как и ожидалось. lastUpdated — это дата из исходного запроса get при печати в цикле. Я, если я остановлю программу и повторно запущу ее после того, как узнаю, что URL-адрес был обновлен, программа работает.

Кто-нибудь может помочь мне понять, почему это так?

 from requests import get

#Only run once data has been updated
response = get(endpoint, timeout=10)
LastUpdated = datetime.datetime.strptime(response.headers['Last-Modified'][5:16], "%d %b %Y").date()
Now = datetime.datetime.now()
while(LastUpdated < Now.date()):
   print("Data not updated as of "   Now.time().strftime("%H:%M")   ", last updated: "   response.headers['Last-Modified'])
   time.sleep(60)
   response = get(endpoint, timeout=10)
   LastUpdated = datetime.datetime.strptime(response.headers['Last-Modified'][5:16], "%d %b %Y").date()
 

Комментарии:

1. распечатайте lastUpdated (должно быть last_updated) и Now.date() в цикле while, чтобы увидеть, что происходит.

2. Я напечатал lastUpdated и Now.date() оба выходят, как и ожидалось. И я, если я остановлю программу и повторно запущу ее после того, как узнаю, что URL-адрес был обновлен, он работает.