1
海峽的一點是:蟒蛇異步專用類方法__delete__
我怎樣才能async def
特價類的方法,如在python __delete__
?
爲什麼我需要這樣的:
爲了實現多進程之間共享一個不錯的緩存系統,我想從數據庫中檢索一次數據,並將它們存儲在緩存,緩存中的修改數據和當數據不再使用時:更新數據庫。我的問題是,爲了知道哪些情況下是最後一個,我想用__delete__特殊方法asyncly
def asyncinit(cls):
"""Credits: http://stackoverflow.com/a/33140788/4241798"""
__new__ = cls.__new__
async def init(obj, *arg, **kwarg):
await obj.__init__(*arg, **kwarg)
return obj
def new(cls, *arg, **kwarg):
obj = __new__(cls, *arg, **kwarg)
coro = init(obj, *arg, **kwarg)
return coro
cls.__new__ = new
return cls
@asyncinit
class AsyncUser:
async def __init__(self, id: int):
self.id = id
with await cachepool as cache:
cache.hincr(f"users:{id}", "refcnt")
async def __delete__(self):
"""Won't work"""
with await cachepool as cache:
refcnt = await cache.hincrby(f"users:{self.id}", "refcnt", -1)
if refcnt == 0:
# update database
# rest of the class...
Duplicate:請參閱本文以獲得答案。 http://stackoverflow.com/a/33134213/1943571 –
我來自那裏,這個答案不適用於'__delete__'這個方法' –
它說在那裏的異步不適用於非異步魔術方法,*包括*'__delete__'。 –