from __future__ import division
import time
+import weakref
from twisted.internet import task
self.expiry_deque = LinkedList()
self.d = dict() # key -> node, value
- self._expire_loop = task.LoopingCall(self.expire)
- self._expire_loop.start(1) # XXX use inlinecallbacks and stop expiring at some point
+
+ self_ref = weakref.ref(self, lambda _: expire_loop.stop() if expire_loop.running else None)
+ self._expire_loop = expire_loop = task.LoopingCall(lambda: self_ref().expire())
+ expire_loop.start(1)
def stop(self):
self._expire_loop.stop()