@@ -208,6 +208,10 @@ def get_many(self, keys, version=None):
208208
209209 async def aget_many (self , keys , version = None ):
210210 """See get_many()."""
211+ if self .get_many .__func__ is not BaseCache .get_many :
212+ return await sync_to_async (self .get_many , thread_sensitive = True )(
213+ keys , version = version
214+ )
211215 d = {}
212216 for k in keys :
213217 val = await self .aget (k , self ._missing_key , version = version )
@@ -236,6 +240,10 @@ def get_or_set(self, key, default, timeout=DEFAULT_TIMEOUT, version=None):
236240
237241 async def aget_or_set (self , key , default , timeout = DEFAULT_TIMEOUT , version = None ):
238242 """See get_or_set()."""
243+ if self .get_or_set .__func__ is not BaseCache .get_or_set :
244+ return await sync_to_async (self .get_or_set , thread_sensitive = True )(
245+ key , default , timeout = timeout , version = version
246+ )
239247 val = await self .aget (key , self ._missing_key , version = version )
240248 if val is self ._missing_key :
241249 if callable (default ):
@@ -255,6 +263,10 @@ def has_key(self, key, version=None):
255263 )
256264
257265 async def ahas_key (self , key , version = None ):
266+ if self .has_key .__func__ is not BaseCache .has_key :
267+ return await sync_to_async (self .has_key , thread_sensitive = True )(
268+ key , version = version
269+ )
258270 return (
259271 await self .aget (key , self ._missing_key , version = version )
260272 is not self ._missing_key
@@ -274,6 +286,10 @@ def incr(self, key, delta=1, version=None):
274286
275287 async def aincr (self , key , delta = 1 , version = None ):
276288 """See incr()."""
289+ if self .incr .__func__ is not BaseCache .incr :
290+ return await sync_to_async (self .incr , thread_sensitive = True )(
291+ key , delta = delta , version = version
292+ )
277293 value = await self .aget (key , self ._missing_key , version = version )
278294 if value is self ._missing_key :
279295 raise ValueError ("Key '%s' not found" % key )
@@ -317,6 +333,10 @@ def set_many(self, data, timeout=DEFAULT_TIMEOUT, version=None):
317333 return []
318334
319335 async def aset_many (self , data , timeout = DEFAULT_TIMEOUT , version = None ):
336+ if self .set_many .__func__ is not BaseCache .set_many :
337+ return await sync_to_async (self .set_many , thread_sensitive = True )(
338+ data , timeout = timeout , version = version
339+ )
320340 for key , value in data .items ():
321341 await self .aset (key , value , timeout = timeout , version = version )
322342 return []
@@ -331,6 +351,10 @@ def delete_many(self, keys, version=None):
331351 self .delete (key , version = version )
332352
333353 async def adelete_many (self , keys , version = None ):
354+ if self .delete_many .__func__ is not BaseCache .delete_many :
355+ return await sync_to_async (self .delete_many , thread_sensitive = True )(
356+ keys , version = version
357+ )
334358 for key in keys :
335359 await self .adelete (key , version = version )
336360
@@ -361,6 +385,10 @@ def incr_version(self, key, delta=1, version=None):
361385
362386 async def aincr_version (self , key , delta = 1 , version = None ):
363387 """See incr_version()."""
388+ if self .incr_version .__func__ is not BaseCache .incr_version :
389+ return await sync_to_async (self .incr_version , thread_sensitive = True )(
390+ key , delta = delta , version = version
391+ )
364392 if version is None :
365393 version = self .version
366394
@@ -387,7 +415,7 @@ def close(self, **kwargs):
387415 pass
388416
389417 async def aclose (self , ** kwargs ):
390- pass
418+ return await sync_to_async ( self . close , thread_sensitive = True )( ** kwargs )
391419
392420
393421memcached_error_chars_re = _lazy_re_compile (r"[\x00-\x20\x7f]" )
0 commit comments