Как зациклить выполнение скрипта с таймаутом в n секунд?

import requests

url = "https://example.com"

headers = {
    "key": "12345678"
}

response = requests.get(url, headers=headers)
data = response.json()

links = [x['Url'] for x in data['result']['List']]
res = [i.replace('.com', '.ru').replace('work.', 'host.')
       for i in links if '//work.' in i]

print(*res, sep='\n')
with open('output.txt', "w") as file:
    for i in res:
        file.write(i + '\n')


Ответы (2 шт):

Автор решения: Dima

Для этого может пригодиться модуль time и функция модуля time.sleep(n). Пример кода:

import requests
import time
    
while True:
    url = "https://example.com"
    response = requests.get(url)
    time.sleep(10) #10 - кол-во секунд таймаута
    print(response)
→ Ссылка
Автор решения: quswadress

Вы можете весь скрипт поместить в функцию, и вызывать её в while True вместе с time.sleep.

import requests
import time


def do_some_work():   # Функция с периодически запускающимся 'скриптом'
    url = "https://example.com"

    headers = {
        "key": "12345678"
    }

    response = requests.get(url, headers=headers)
    data = response.json()

    links = [x['Url'] for x in data['result']['List']]
    res = [i.replace('.com', '.ru').replace('work.', 'host.')
           for i in links if '//work.' in i]

    print(*res, sep='\n')
    with open('output.txt', "w") as file:
        for i in res:
            file.write(i + '\n')


N = 10
while True:   # Бесконечный цикл в котором
    do_some_work()   # Мы запускаем основной код
    time.sleep(N)   # и засыпаем на N секунд

Или, если N достаточно большое, вы можете запускать сам файл периодически с помощью функций ОС, для Unix подобных систем с помощью cron(Гайд), для Windows с помощью планировщика задач(Гайд).

→ Ссылка