#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-адрес был обновлен, он работает.