mirror of
				https://github.com/avatao-content/baseimage-tutorial-framework
				synced 2025-11-04 06:22:55 +00:00 
			
		
		
		
	Make AsyncRateLimiter thread safe
This commit is contained in:
		@@ -59,17 +59,23 @@ class RateLimiter:
 | 
			
		||||
        return 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# TODO document this
 | 
			
		||||
class AsyncRateLimiter(RateLimiter):
 | 
			
		||||
    def __init__(self, rate_per_second, ioloop_factory):
 | 
			
		||||
        self._ioloop_factory = ioloop_factory
 | 
			
		||||
        self._ioloop = None
 | 
			
		||||
        self._last_callback = None
 | 
			
		||||
 | 
			
		||||
        self._make_action_thread_safe()
 | 
			
		||||
 | 
			
		||||
        super().__init__(
 | 
			
		||||
            rate_per_second=rate_per_second,
 | 
			
		||||
            action=self.async_action
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def _make_action_thread_safe(self):
 | 
			
		||||
        self.async_action = partial(self.ioloop.add_callback, self.async_action)
 | 
			
		||||
 | 
			
		||||
    @lazy_property
 | 
			
		||||
    def ioloop(self):
 | 
			
		||||
        return self._ioloop_factory()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user