Package restkit :: Package pool :: Module rgevent
[hide private]
[frames] | no frames]

Source Code for Module restkit.pool.rgevent

 1  # -*- coding: utf-8 - 
 2  # 
 3  # This file is part of restkit released under the MIT license.  
 4  # See the NOTICE for more information. 
 5   
 6  import gevent 
 7  from gevent import queue 
 8   
 9  from restkit.pool.monitored import MonitoredHost, MonitoredPool 
10   
11 -class GeventHost(MonitoredHost):
12
13 - def init_pool(self):
14 self.pool = queue.Queue()
15
16 - def do_get(self):
17 return self.pool.get()
18
19 - def do_put(self, conn):
20 self.pool.put(conn)
21
22 - def waiting(self):
23 return max(0, len(self.pool.getters) - len(self.pool.putters))
24 25
26 -class GeventPool(MonitoredPool):
27 HOST_CLASS = GeventHost 28
29 - def start(self):
30 self.loop = gevent.spawn(self.monitor_loop)
31
32 - def monitor_loop(self):
33 while self.alive: 34 gevent.sleep(0.1) 35 for host in self._hosts.values(): 36 host.murder_connections()
37