Продолжая, где я остановился на Python - PullRequest
0 голосов
/ 25 января 2019

У меня есть список ссылок, которые я выполняю для каждой ссылки по определенной функции, функция занимает около 25 секунд, я использую селен, чтобы открыть каждую и получить источник страницы, а затем выполнить свою функцию, однако всякий раз, когда Я собираю программу и отменяю сборку, мне придется начинать все сначала.

Примечание : я получаю links из разных сетей карта сайта .

Есть ли способ сохранить мой прогресс и продолжить его позже?

Ответы [ 3 ]

0 голосов
/ 25 января 2019

этот код будет работать. Я предполагаю, что у вас уже есть функция получения ссылок. Я только что использовал пустышку _get_links. Вам нужно будет удалить содержимое файла links и поместить файл 0 в index после каждого успешного запуска.

import time

def _get_links():
    return ["a", "b", "c"]

def _get_links_from_file():
    with open("links") as file:
        return file.read().split(",")


def _do_something(link):
    print(link)
    time.sleep(30)

def _save_links_to_file(links):
    with open("links", "w") as file:
        file.write(",".join(links))
    print("links saved")

def _save_index_to_file(index):
    with open("index", "w") as file:
        file.write(str(index))
    print("index saved")

def _get_index_from_file():
    with open("index",) as file:
        return int(file.read().strip())


def process_links():
    links=_get_links_from_file()
    if len(links) == 0:
        links = _get_links()
        _save_links_to_file(links)
    else:
        links = _get_links_from_file()[_get_index_from_file():]


    for index, link in enumerate(links):
        _do_something(link)
        _save_index_to_file(index+1)

if __name__ == '__main__':
    process_links()
0 голосов
/ 26 января 2019

Я бы посоветовал вам записать ссылки на файл вместе с отметкой даты / времени последней обработки.Когда вы пишете ссылки на файл, вам нужно убедиться, что вы не пишете одну и ту же ссылку дважды.Вы также захотите поставить отметку даты / времени после завершения обработки.

Когда у вас есть этот список, при запуске сценария вы читаете весь список и начинаете обработку ссылок, которые еще не были обработаны.через X дней (или по вашим критериям).

Шаги:

  1. Загрузить файл ссылок
  2. Очистить ссылки с карты сайта, сравнить с существующими ссылками из файла, написатьлюбые новые ссылки на файл
  3. Найдите первую ссылку, которая не была обработана в течение X дней
  4. Обработайте эту ссылку, затем напишите отметку даты / времени рядом со ссылкой, например,

    http://www.google.com,1/25/2019 12:00PM
    
  5. Вернитесь к шагу 3

Теперь каждый раз, когда вы убиваете прогон, процесс запускается с того места, где вы остановились.

ПРИМЕЧАНИЕ. Простовыписать дату может быть достаточно.Это зависит только от того, как часто вы хотите обновить свой список (ежечасно и т. Д.) Или хотите ли вы так много деталей.

0 голосов
/ 25 января 2019

Вы должны сохранить ссылки в текстовом файле. Вы также должны сохранить номера индексов в другом текстовом файле, возможно, с инициализацией 0. 0. 1001 *

В своем коде вы можете затем перебирать ссылки, используя что-то вроде:

для ссылки в ссылках [index_number:]

В конце каждого цикла добавьте номер индекса в текстовый файл, содержащий номера индекса. Это поможет вам продолжить с того места, где вы остановились.

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