Задачи и неидемпотентные задачи
Я работаю над приложением для голосования, где пользователь может загрузить список адресов электронной почты для всех избирателей. После некоторой проверки ошибок я создаю 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, чтобы предотвратить создание дублирующих сущностей избирателей.