Легкое и эффективное хранение данных для многих списков - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть небольшой скрипт для получения списка из некоторого API и сравнения результата с предыдущим. Данные представляют собой массив цифр, и я использую CSV-подобные текстовые файлы для сохранения результатов.

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

Что мне нужно (с приоритетом)

  1. данные не должны быть повреждены, даже если одновременно выполняется несколько сценариев
  2. данные должны храниться при перезагрузке
  3. легкий - и данные, и сценарий невелики. Я рад, если хранилище данных тоже.

О данных:

  • массив цифр
  • Просто посмотрите по ключу. Нет необходимости искать по значениям.
  • Чтение / запись один раз в час на тержет. Таким образом, если у нас есть 100 целей, 100 прав на чтение и 100 прав на запись за один час.

Вот структура текущего кода. (обработка ошибок опущена)

def get_results_from_api(id):
    # Dummy code
    results = ['111111', '222222', '33333']
    return set(results)

def get_results_from_file(id):
    filename = '{}.csv'.format(id)
    with open(filename) as fp:
        content = fp.read()
    return set(content.split(','))

def save_to_file(id, data):
    filename = '{}.csv'.format(id)
    with open(filename, 'w') as fp:
        fp.write(','.join(map(str, data))

def main(id):
    previous = get_results_from_file(id)
    current = get_results_from_file(id)
    print('added: {}\nremoved: {}'.format(current - previous, previous - current)
    save_to_file(id, current)

if __name__ == 'main':
    import sys
    main(sys.argv[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...