我想在不覆盖现有密钥的情况下更新给定的state_名称;set_state和save_state函数的组合始终覆盖所有键
函数add_或_update似乎可以满足我的需要;updateif exists类型逻辑,尽管我似乎无法理解update\u value\u工厂参数
有人能提供一个添加或更新功能的工作示例吗
https://github.com/dapr/python-sdk/blob/master/dapr/actor/runtime/state_manager.py
async def add_or_update_state(
self, state_name: str,
value: T, update_value_factory: Callable[[str, T], T]) -> T:
if not callable(update_value_factory):
raise AttributeError('update_value_factory is not callable')
if state_name in self._state_change_tracker:
state_metadata = self._state_change_tracker[state_name]
if state_metadata.change_kind == StateChangeKind.remove:
self._state_change_tracker[state_name] = \
StateMetadata(value, StateChangeKind.update)
return value
new_value = update_value_factory(state_name, state_metadata.value)
state_metadata.value = new_value
if state_metadata.change_kind == StateChangeKind.none:
state_metadata.change_kind = StateChangeKind.update
self._state_change_tracker[state_name] = state_metadata
return new_value
has_value, val = await self._actor.runtime_ctx.state_provider.try_load_state(
self._type_name, self._actor.id.id, state_name)
if has_value:
new_value = update_value_factory(state_name, val)
self._state_change_tracker[state_name] = \
StateMetadata(new_value, StateChangeKind.update)
return new_value
self._state_change_tracker[state_name] = \
StateMetadata(value, StateChangeKind.add)
return value
目前没有回答
相关问题 更多 >
编程相关推荐