Nano Hash - криптовалюты, майнинг, программирование

очередь задач и неидемпотентные задачи

Я работаю над приложением для голосования, где пользователь может загрузить список адресов электронной почты для всех избирателей. После проверки ошибок я создаю сущность Voter для каждого избирателя. Поскольку может быть большое количество избирателей, я создаю Voter объектов в очереди задач, чтобы избежать 30-секундного ограничения, и задача выглядит следующим образом:

    put_list = []
    for email, id in itertools.izip(voter_emails, uuids):
        put_list.append(Voter(election = election,
                              email = email,
                              uuid = id))
    election.txt_voters = ""
    put_list.append(election)
    db.put(put_list)

Однако эта задача не является идемпотентной. Есть ли способ сделать эту задачу идемпотентной? Или есть лучший способ сделать это?


Ответы:


1

используйте key_name, а не свойство uuid, чтобы предотвратить создание повторяющихся сущностей избирателя.

17.07.2011
  • Мне нравится эта идея, но меня беспокоит количество вызовов хранилища данных. В приведенном выше коде есть только один файл put. Чтобы использовать именованные ключи, я думаю, мне пришлось бы вызывать get_or_insert для каждого избирателя (очень большое число) плюс один помещенный. Можно ли выполнять массовые операции с именованными ключами? 17.07.2011
  • вы сможете использовать put() даже с key_name, и новый экземпляр заменит все свойства старого. Непонятно, для чего вообще нужен uuid. Я бы, наверное, сделал что-то вроде Voter(parent=election, key_name=email) 17.07.2011
  • @TokenMacGuy, использование электронной почты в качестве имени ключа - хорошая идея. Мне нужен UUID для предотвращения мошенничества с избирателями (UUID отправляется на электронную почту избирателя). Я думаю, что не хочу, чтобы Избиратель находился в той же группе объектов, что и Выборы, но я собираюсь задать еще один вопрос об этом. 18.07.2011
  • @TokenMacGuy, на самом деле я не могу использовать адрес электронной почты в качестве имени ключа, поскольку его уникальность не гарантируется (один и тот же адрес электронной почты может использоваться на двух разных выборах). Думаю, я мог бы добавить какой-нибудь уникальный идентификатор для выборов. 18.07.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..