def __init__(self, connect, minsize=5, maxsize=10, *args, **kwargs): self.connect = connect self.free_items = deque() if minsize > maxsize: minsize = maxsize self.minsize = minsize self.maxsize = maxsize self.connected_count = 0 self.args = args self.kwargs = kwargs self.waittings = 0 self.wait_event = '%s_%s' % (self.FREE_CONN_EVENT, id(self)) # init pool Scheduler.instance().new(self.init(), 'PoolInit')
init_task = yield NewTask(pool.init()) yield WaitTask(init_task) assert pool.connected_count == minsize assert len(pool.free_items) == minsize assert not pool.waittings connected_count = pool.connected_count conns = [] for _ in range(minsize): conns.append((yield pool.get())) assert connected_count == pool.connected_count assert len(pool.free_items) == 0 for _ in range(maxsize - minsize): conns.append((yield pool.get())) assert len(pool.free_items) == 0 assert pool.connected_count == maxsize assert len(pool.free_items) == 0 yield NewTask(free_conn(pool, conns.pop())) conns.append((yield pool.get())) assert len(conns) == maxsize assert pool.connected_count == maxsize exit() schedule = Scheduler.instance() schedule.new(pool_test(5, 10)) schedule.mainloop()
def main(): httpserver = HTTPServer(handler) httpserver.listen(port) s = Scheduler.instance(debug=False) s.new(httpserver.start()) s.mainloop()