Disk state manager don't use byref (#3874)

This commit is contained in:
Nikhil Rao 2024-09-03 13:42:35 -07:00 committed by GitHub
parent c07a983f05
commit 15a9f0a104
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2457,6 +2457,20 @@ def _default_token_expiration() -> int:
return get_config().redis_token_expiration
def _serialize_type(type_: Any) -> str:
"""Serialize a type.
Args:
type_: The type to serialize.
Returns:
The serialized type.
"""
if not inspect.isclass(type_):
return f"{type_}"
return f"{type_.__module__}.{type_.__qualname__}"
def state_to_schema(
state: BaseState,
) -> List[
@ -2480,7 +2494,7 @@ def state_to_schema(
(
field_name,
model_field.name,
model_field.type_,
_serialize_type(model_field.type_),
(
model_field.required
if isinstance(model_field.required, bool)
@ -2643,7 +2657,7 @@ class StateManagerDisk(StateManager):
self.states[substate_token] = substate
state_dilled = dill.dumps((state_to_schema(substate), substate), byref=True)
state_dilled = dill.dumps((state_to_schema(substate), substate))
if not self.states_directory.exists():
self.states_directory.mkdir(parents=True, exist_ok=True)
self.token_path(substate_token).write_bytes(state_dilled)