145 |
145 |
146 class _CnxSetPool: |
146 class _CnxSetPool: |
147 |
147 |
148 def __init__(self, source, size): |
148 def __init__(self, source, size): |
149 self._cnxsets = [] |
149 self._cnxsets = [] |
|
150 |
150 if size is not None: |
151 if size is not None: |
151 self._queue = queue.Queue() |
152 self._queue = queue.Queue() |
|
153 |
152 for i in range(size): |
154 for i in range(size): |
153 cnxset = source.wrapped_connection() |
155 cnxset = source.wrapped_connection() |
154 self._cnxsets.append(cnxset) |
156 self._cnxsets.append(cnxset) |
155 self._queue.put_nowait(cnxset) |
157 self._queue.put_nowait(cnxset) |
|
158 |
156 else: |
159 else: |
157 self._queue = None |
160 self._queue = None |
158 self._source = source |
161 self._source = source |
159 |
162 |
160 def qsize(self): |
163 def qsize(self): |
161 if self._queue is None: |
164 if self._queue is None: |
162 return None |
165 return None |
|
166 |
163 return self._queue.qsize() |
167 return self._queue.qsize() |
164 |
168 |
165 def get(self): |
169 def get(self): |
166 if self._queue is None: |
170 if self._queue is None: |
167 return self._source.wrapped_connection() |
171 return self._source.wrapped_connection() |
|
172 |
168 try: |
173 try: |
169 return self._queue.get(True, timeout=5) |
174 return self._queue.get(True, timeout=5) |
170 except queue.Empty: |
175 except queue.Empty: |
171 raise Exception('no connections set available after 5 secs, probably either a ' |
176 raise Exception('no connections set available after 5 secs, probably either a ' |
172 'bug in code (too many uncommited/rolled back ' |
177 'bug in code (too many uncommited/rolled back ' |