У меня есть небольшой скрипт для получения списка из некоторого API и сравнения результата с предыдущим. Данные представляют собой массив цифр, и я использую CSV-подобные текстовые файлы для сохранения результатов.
Теперь мне нужен более стабильный способ для запуска сценария над 100 (и будет расти) количеством целей.
Что мне нужно (с приоритетом)
- данные не должны быть повреждены, даже если одновременно выполняется несколько сценариев
- данные должны храниться при перезагрузке
- легкий - и данные, и сценарий невелики. Я рад, если хранилище данных тоже.
О данных:
- массив цифр
- Просто посмотрите по ключу. Нет необходимости искать по значениям.
- Чтение / запись один раз в час на тержет. Таким образом, если у нас есть 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])