Download backend/open_webui/apps/socket/utils.py from Rfym21/OpenWebUI: direct link, hf CLI and curl.
- Browser
- Download file 1.62 kB
-
https://huggingface.co/spaces/Rfym21/OpenWebUI/resolve/main/backend/open_webui/apps/socket/utils.py
- Command line
-
hf download hf://spaces/Rfym21/OpenWebUI/backend/open_webui/apps/socket/utils.py
-
curl -L -o utils.py https://huggingface.co/spaces/Rfym21/OpenWebUI/resolve/main/backend/open_webui/apps/socket/utils.py
1.62 kB
| import json | |
| import redis | |
| class RedisDict: | |
| def __init__(self, name, redis_url): | |
| self.name = name | |
| self.redis = redis.Redis.from_url(redis_url, decode_responses=True) | |
| def __setitem__(self, key, value): | |
| serialized_value = json.dumps(value) | |
| self.redis.hset(self.name, key, serialized_value) | |
| def __getitem__(self, key): | |
| value = self.redis.hget(self.name, key) | |
| if value is None: | |
| raise KeyError(key) | |
| return json.loads(value) | |
| def __delitem__(self, key): | |
| result = self.redis.hdel(self.name, key) | |
| if result == 0: | |
| raise KeyError(key) | |
| def __contains__(self, key): | |
| return self.redis.hexists(self.name, key) | |
| def __len__(self): | |
| return self.redis.hlen(self.name) | |
| def keys(self): | |
| return self.redis.hkeys(self.name) | |
| def values(self): | |
| return [json.loads(v) for v in self.redis.hvals(self.name)] | |
| def items(self): | |
| return [(k, json.loads(v)) for k, v in self.redis.hgetall(self.name).items()] | |
| def get(self, key, default=None): | |
| try: | |
| return self[key] | |
| except KeyError: | |
| return default | |
| def clear(self): | |
| self.redis.delete(self.name) | |
| def update(self, other=None, **kwargs): | |
| if other is not None: | |
| for k, v in other.items() if hasattr(other, "items") else other: | |
| self[k] = v | |
| for k, v in kwargs.items(): | |
| self[k] = v | |
| def setdefault(self, key, default=None): | |
| if key not in self: | |
| self[key] = default | |
| return self[key] | |