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  from gevent import spawn_later 
 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(0)
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 monitor(self, conn):
23 super(GeventHost, self).monitor(conn) 24 spawn_later(self.timeout, self.expire, conn.fileno())
25
26 - def waiting(self):
27 return max(0, len(self.pool.getters) - len(self.pool.putters))
28 29
30 -class GeventPool(MonitoredPool):
31 HOST_CLASS = GeventHost
32