Mercurial > repos > bcclaywell > argo_navis
comparison venv/lib/python2.7/site-packages/requests_toolbelt/threaded/thread.py @ 0:d67268158946 draft
planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
| author | bcclaywell |
|---|---|
| date | Mon, 12 Oct 2015 17:43:33 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:d67268158946 |
|---|---|
| 1 """Module containing the SessionThread class.""" | |
| 2 import threading | |
| 3 try: | |
| 4 import queue # Python 3 | |
| 5 except ImportError: | |
| 6 import Queue as queue | |
| 7 import uuid | |
| 8 | |
| 9 import requests.exceptions as exc | |
| 10 | |
| 11 | |
| 12 class SessionThread(object): | |
| 13 def __init__(self, initialized_session, job_queue, response_queue, | |
| 14 exception_queue): | |
| 15 self._session = initialized_session | |
| 16 self._jobs = job_queue | |
| 17 self._create_worker() | |
| 18 self._responses = response_queue | |
| 19 self._exceptions = exception_queue | |
| 20 | |
| 21 def _create_worker(self): | |
| 22 self._worker = threading.Thread( | |
| 23 target=self._make_request, | |
| 24 name=uuid.uuid4(), | |
| 25 ) | |
| 26 self._worker.daemon = True | |
| 27 self._worker._state = 0 | |
| 28 self._worker.start() | |
| 29 | |
| 30 def _handle_request(self, kwargs): | |
| 31 try: | |
| 32 response = self._session.request(**kwargs) | |
| 33 except exc.RequestException as e: | |
| 34 self._exceptions.put((kwargs, e)) | |
| 35 else: | |
| 36 self._responses.put((kwargs, response)) | |
| 37 finally: | |
| 38 self._jobs.task_done() | |
| 39 | |
| 40 def _make_request(self): | |
| 41 while True: | |
| 42 try: | |
| 43 kwargs = self._jobs.get_nowait() | |
| 44 except queue.Empty: | |
| 45 break | |
| 46 | |
| 47 self._handle_request(kwargs) | |
| 48 | |
| 49 def is_alive(self): | |
| 50 """Proxy to the thread's ``is_alive`` method.""" | |
| 51 return self._worker.is_alive() | |
| 52 | |
| 53 def join(self): | |
| 54 """Join this thread to the master thread.""" | |
| 55 self._worker.join() |
