MCPcopy
hub / github.com/celery/celery / CacheBackend

Class CacheBackend

celery/backends/cache.py:90–163  ·  view source on GitHub ↗

Cache result backend.

Source from the content-addressed store, hash-verified

88
89
90class CacheBackend(KeyValueStoreBackend):
91 """Cache result backend."""
92
93 servers = None
94 supports_autoexpire = True
95 supports_native_join = True
96 implements_incr = True
97
98 def __init__(self, app, expires=None, backend=None,
99 options=None, url=None, **kwargs):
100 options = {} if not options else options
101 super().__init__(app, **kwargs)
102 self.url = url
103
104 self.options = dict(self.app.conf.cache_backend_options,
105 **options)
106
107 self.backend = url or backend or self.app.conf.cache_backend
108 if self.backend:
109 self.backend, _, servers = self.backend.partition('://')
110 self.servers = servers.rstrip('/').split(';')
111 self.expires = self.prepare_expires(expires, type=int)
112 try:
113 self.Client, self.key_t = backends[self.backend]()
114 except KeyError:
115 raise ImproperlyConfigured(UNKNOWN_BACKEND.format(
116 self.backend, ', '.join(backends)))
117 self._encode_prefixes() # rencode the keyprefixes
118
119 def get(self, key):
120 return self.client.get(key)
121
122 def mget(self, keys):
123 return self.client.get_multi(keys)
124
125 def set(self, key, value):
126 return self.client.set(key, value, self.expires)
127
128 def delete(self, key):
129 return self.client.delete(key)
130
131 def _apply_chord_incr(self, header_result_args, body, **kwargs):
132 chord_key = self.get_key_for_chord(header_result_args[0])
133 self.client.set(chord_key, 0, time=self.expires)
134 return super()._apply_chord_incr(
135 header_result_args, body, **kwargs)
136
137 def incr(self, key):
138 return self.client.incr(key)
139
140 def expire(self, key, value):
141 return self.client.touch(key, value)
142
143 @cached_property
144 def client(self):
145 return self.Client(self.servers, **self.options)
146
147 def __reduce__(self, args=(), kwargs=None):

Calls

no outgoing calls