Create a new state manager. Returns: The state manager (either disk, memory or redis). Raises: InvalidStateManagerModeError: If the state manager mode is invalid.
(cls)
| 54 | |
| 55 | @classmethod |
| 56 | def create(cls): |
| 57 | """Create a new state manager. |
| 58 | |
| 59 | Returns: |
| 60 | The state manager (either disk, memory or redis). |
| 61 | |
| 62 | Raises: |
| 63 | InvalidStateManagerModeError: If the state manager mode is invalid. |
| 64 | """ |
| 65 | config = get_config() |
| 66 | if ( |
| 67 | "state_manager_mode" not in config._non_default_attributes |
| 68 | and prerequisites.parse_redis_url() is not None |
| 69 | ): |
| 70 | config.state_manager_mode = constants.StateManagerMode.REDIS |
| 71 | if config.state_manager_mode == constants.StateManagerMode.MEMORY: |
| 72 | from reflex.istate.manager.memory import StateManagerMemory |
| 73 | |
| 74 | return StateManagerMemory() |
| 75 | if config.state_manager_mode == constants.StateManagerMode.DISK: |
| 76 | from reflex.istate.manager.disk import StateManagerDisk |
| 77 | |
| 78 | return StateManagerDisk() |
| 79 | if config.state_manager_mode == constants.StateManagerMode.REDIS: |
| 80 | redis = prerequisites.get_redis() |
| 81 | if redis is not None: |
| 82 | from reflex.istate.manager.redis import StateManagerRedis |
| 83 | |
| 84 | # make sure expiration values are obtained only from the config object on creation |
| 85 | return StateManagerRedis( |
| 86 | redis=redis, |
| 87 | token_expiration=config.redis_token_expiration, |
| 88 | lock_expiration=config.redis_lock_expiration, |
| 89 | lock_warning_threshold=config.redis_lock_warning_threshold, |
| 90 | ) |
| 91 | msg = f"Expected one of: DISK, MEMORY, REDIS, got {config.state_manager_mode}" |
| 92 | raise InvalidStateManagerModeError(msg) |
| 93 | |
| 94 | @staticmethod |
| 95 | def _coerce_token(token: StateToken[TOKEN_TYPE] | str) -> StateToken[TOKEN_TYPE]: |
nothing calls this directly
no test coverage detected