Странные сделки Firestore.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Странные сделки Firestore.

Сообщение Anonymous »

Пример использования:
скажем, мне нужно отслеживать общее население, штаты и все города в штате. В конечном итоге документ должен выглядеть ниже, в котором есть все штаты и города внутри. < /P>

Код: Выделить всё

{
"Arizona": {
"cities": [{
"city": "Phoenix",
"city_code": 123
}]
}
}
< /code>
У меня есть два экземпляра бэкэнд -сервера, взаимодействующего с Firestore. Следовательно, я добавил транзакции для обработки параллелизма. Однако в текущей реализации отсутствует почти половина городов во всех обновлениях. Я предполагаю, что это может быть связано с тем, что один экземпляр не выполняет операцию ADD_STATE, и каким -то образом повторения не работают. Кроме того, следующий вызов для обновления агрегированных метрик также не выполняется. Что мне не хватает в коде ниже? с одним городом. < /li>
[*] Если государство уже существует, добавляют город с помощью Arrayunion.
 Опубликуйте эту транзакцию увеличить агрегированные метрики с популяцией. < /li>
< /ol>
def add(population, state, city, city_code)
is_new_state = add_state(state, city, city_code)
aggregated_metrics.update(population, is_new_state)

def add_state(state, city, city_code):  # pragma: no cover
@firestore.transactional
def add_state(transactn, states_ref) -> bool:
states_data = states_ref.get(transaction=transactn).to_dict()
if state in states_data:
transactn.update(states_ref, {
f'{state}.cities': firestore.ArrayUnion([{
'city': city,
'code': city_code,
}])
})
return False
else:
transactn.set(states_ref, {
state: {
'cities': [{
'city': city,
'code': city_code,
}]
}}, merge=True)
return True

states_ref = collection.document(states_doc_id)
transaction = db.transaction()
is_new_state = add_state(transaction, states_ref)

return is_new_state
Я ожидал, что транзакции будут автоматически повторно повторно, как указано в официальной документации.

Подробнее здесь: https://stackoverflow.com/questions/794 ... nt-results
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»