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

Итак, я пытался создать монитор, который сравнивал бы два списка - Old_list и new_list, где old_list сохраняет текущие json-файлы, которые сохранены сейчас, и new_list, который проверяет, добавлен ли новый элемент, добавит его в новый список

Json:

sample = {
    "threads": [
        {
            "seoTitle": "used cfood",
            "other_crap": "yeet"
        },
        {
            "seoTitle": "trucks",
            "other_crap": "it's a fox!"

        },
        {
            "seoTitle": "rockets",
            "other_crap": "i'm rocket man"
        },
        {
            "seoTitle": "helicopter",
            "other_crap": "for 007",
            "price": {
              "currentRetailPrice": 1249.95
            }
        }
    ]
}

Код:

old_list = []

    while True:
        try:
            url = 'www.helloworld.com'
            resp = s.get(url)

            new_list = resp.json()['threads']

            for item in new_list:
                if item['seoTitle'] not in old_list:
                    try:

                        print(item['seoTitle']) 
                        print('item['other_crap']))  # Print other information
                        old_list.append(item['seoTitle'])


                    except Exception as e:
                        print(e)
                        print("ERROR")
                        time.sleep(5)
                        continue

            else:
                logger.warn("No new link found!")
                time.sleep(5)

        except Exception as e:
            print(e)
            continue

Что я заметил, проблема в том, что я считаю, что программа должна сравнить два списка, которые я сделал:

for item in new_list:
    if item['seoTitle'] not in old_list:

но проблема в том, что каждый раз, когда он проверяет сравнение, он входит в метод try и зацикливается на нем каждый раз, что я считаю неправильным. Что он должен делать, так это то, что если нет ничего нового, то он должен просто выполнить метод Else . Что я сделал не так?

---- Он печатает каждый раз

 print(item['seoTitle']) 
 print('item['other_crap']))  # Print other information

каждый раз вместо перехода на else: method.

1 Ответ

0 голосов
/ 27 июня 2018

Не думаю, что оно застрянет внутри try/except. Я думаю, что это добавляет, затем возвращается к началу и застревает, потому что что-то происходит с сетевыми коммуникациями, поэтому он просто зависает в ожидании сервера. Скорее всего.

Но вы не очень точны в том, что вы наблюдаете, поэтому трудно сказать. Мы также не знаем, что вы используете для подключения к серверу, что усложняет задачу. Что такое s? Возможно, вы сможете установить тайм-аут сокета, чтобы он возвращался через определенное время без зависания навсегда.

Помогла бы выписка с s.get(url). Кроме того, если вы показали фактический результат, это также поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...