Python - как зацикливаться, пока сайт не работает с использованием запросов и потоков - PullRequest
0 голосов
/ 30 ноября 2018

Итак, что я хочу сделать, так это то, что я хочу создать своего рода монитор для веб-сайта, который регистрирует случайное число.Прежде чем это сделать, он должен запросить сайт, чтобы увидеть, когда он действителен или нет.Когда он активен, он будет генерировать случайные числа 1-100, и я хочу, чтобы он проверял каждые случайные 3-6 секунд, а затем снова печатал число и повторял до тех пор, пока сайт не работает.

Что я пытался сделатьвыглядит следующим образом:

def get_product_feed(url_site):
    thread = url_site
    password = False #We start by giving a false/true value
    while not password: #If it is not True then we do the for loop

            available = False 
            while not available:
                try:

                    checkpass = requests.get(thread, timeout=12) #We requests the site to see if its alive or not

                    if ('deadsite' in checkpass.url): #If it contains etc deadsite then we enter the while True

                        while True:
                            contcheck = requests.get(thread,timeout=12) #We make new requests to see if its dead.
                            if ('deadsite' in contcheck.url): #if it is, then we sleep 3-7sec and try again

                                randomtime = random.randint(3, 7)

                                time.sleep(randomtime)

                            else: #If its not containig it anymore then we send the bs4 value

                                available = True

                                bs4 = soup(contcheck.text, 'lxml')
                                return bs4
                                break

                    else: #If its having either of them then we send instant.
                        bs4 = soup(contcheck.text, 'lxml')
                        return bs4
                        break

                except Exception as err:
                    randomtime = random.randint(1, 2)
                    time.sleep(randomtime)
                    continue





def get_info(thread):
    while True:
        try:
            url = thread

            resp = requests.get(url, timeout=12) #We requests to the website here
            resp.raise_for_status()
            json_resp = resp.json() #We grab the json value.

        except Exception as err:
            randomtime = random.randint(1,3)
            time.sleep(randomtime)
            continue

        metadata = json_resp['number'] #We return the metadata value back to get_identifier

        return metadata


def get_identifier(thread):

    new = get_info(thread) #We requests the get_info(thread):

    try:
        thread_number = new
    except KeyError:
        thread_number = None

    identifier = ('{}').format(thread_number) #We return back to script

    return identifier



def script():
    url_site = 'https://www.randomsitenumbergenerator.com/' #What url we gonna use
    old_list = []

    while True:
            for thread in get_product_feed(url_site): #We loop to see through get_product_feed if its alive or not
                if get_identifier(thread) not in old_list: # We then ask get_identifier(thread) for the values and see if its in the old_list or not.

                        print(get_identifier(thread)
                        old_list.append(get_identifier(thread)

Я добавил комментарий, чтобы было легче понять, что происходит.

Проблема, с которой я столкнулся сейчас, которую я не могу сделать get_identifier (thread) для запуска, пока сайт не работает, и я хочу, чтобы он продолжал распечатывать, пока сайт не заработает, пока не умрет, и это мой вопрос!Что мне нужно сделать, чтобы это произошло?

Я думал о том, чтобы в конечном итоге добавить темы, может быть, 10 потоков одновременно проверяют, не работает ли сайт, и возвращают значение в печатном виде, но я не уверен, является ли это моим решением.на вопрос.

...