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

Source Code for Module restkit.pool.reventlet

 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 eventlet 
 7  from eventlet import queue 
 8   
 9  from restkit.pool.monitored import MonitoredHost, MonitoredPool 
10   
11 -class EventletHost(MonitoredHost):
12
13 - def init_pool(self):
14 self.pool = queue.LightQueue(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(EventletHost, self).monitor(conn) 24 eventlet.spawn_after(self.timeout, self.expire, conn.fileno())
25
26 - def waiting(self):
27 return max(0, self.pool.getting() - self.pool.putting())
28 29
30 -class EventletPool(MonitoredPool):
31 HOST_CLASS = EventletHost
32