def test_timeout_and_put(self): q = Queue() self.assertEqual(q.qsize(), 0) start = default_timer() try: item = yield q.get(timeout=0.5) except Empty: pass self.assertTrue(default_timer()-start >= 0.5) self.assertEqual(q.qsize(), 0) yield q.put('hello') self.assertEqual(q.qsize(), 1) item = yield q.get() self.assertEqual(item, 'hello') self.assertEqual(q.qsize(), 0)
def test_timeout_and_put(self): q = Queue() self.assertEqual(q.qsize(), 0) start = default_timer() try: item = yield q.get(timeout=0.5) except Empty: pass self.assertTrue(default_timer() - start >= 0.5) self.assertEqual(q.qsize(), 0) yield q.put('hello') self.assertEqual(q.qsize(), 1) item = yield q.get() self.assertEqual(item, 'hello') self.assertEqual(q.qsize(), 0)
def test_put_timeout(self): q = Queue(maxsize=2) self.assertEqual(q.maxsize, 2) yield self. async .assertEqual(q.put('hello'), None) yield self. async .assertEqual(q.put('ciao'), None) yield self. async .assertRaises(Full, q.put, 'bla1', timeout=0.5) result = maybe_async(q.put('bla2')) self.assertEqual(q.qsize(), 2) item = yield q.get() self.assertEqual(item, 'hello') self.assertEqual(q.qsize(), 2) item = yield q.get() self.assertEqual(item, 'ciao') item = yield q.get() self.assertEqual(item, 'bla2') self.assertEqual(q.qsize(), 0)
def test_put_timeout(self): q = Queue(maxsize=2) self.assertEqual(q.maxsize, 2) yield self.async.assertEqual(q.put('hello'), None) yield self.async.assertEqual(q.put('ciao'), None) yield self.async.assertRaises(Full, q.put, 'bla1', timeout=0.5) result = maybe_async(q.put('bla2')) self.assertEqual(q.qsize(), 2) item = yield q.get() self.assertEqual(item, 'hello') self.assertEqual(q.qsize(), 2) item = yield q.get() self.assertEqual(item, 'ciao') item = yield q.get() self.assertEqual(item, 'bla2') self.assertEqual(q.qsize(), 0)
class ProxyResponse(object): """Asynchronous wsgi response. """ _headers = None _done = False def __init__(self, environ, start_response, response): self.environ = environ self.start_response = start_response self.queue = Queue() response.on_finished.add_errback(self.error) self.setup(response) def setup(self, response): response.bind_event("data_processed", self.data_processed) def __iter__(self): while True: try: yield self.queue.get(wait=not self._done) except Empty: break def data_processed(self, response, **kw): """Receive data from the requesting HTTP client.""" status = response.get_status() if status == "100 Continue": stream = self.environ.get("wsgi.input") or io.BytesIO() body = yield stream.read() response.transport.write(body) if response.parser.is_headers_complete(): if self._headers is None: headers = self.remove_hop_headers(response.headers) self._headers = Headers(headers, kind="server") # start the response self.start_response(status, list(self._headers)) body = response.recv_body() if response.parser.is_message_complete(): self._done = True self.queue.put(body) def error(self, failure): """Handle a failure.""" if not self._done: uri = self.environ["RAW_URI"] msg = "Oops! Could not find %s" % uri html = wsgi.HtmlDocument(title=msg) html.body.append("<h1>%s</h1>" % msg) data = html.render() resp = wsgi.WsgiResponse(504, data, content_type="text/html") self.start_response(resp.status, resp.get_headers(), failure.exc_info) self._done = True self.queue.put(resp.content[0]) def remove_hop_headers(self, headers): for header, value in headers: if header.lower() not in wsgi.HOP_HEADERS: yield header, value
class ProxyResponse(object): '''Asynchronous wsgi response. ''' _headers = None _done = False def __init__(self, environ, start_response, response): self.environ = environ self.start_response = start_response self.queue = Queue() response.on_finished.add_errback(self.error) self.setup(response) def setup(self, response): response.bind_event('data_processed', self.data_processed) def __iter__(self): while True: try: yield self.queue.get(wait=not self._done) except Empty: break def data_processed(self, response, **kw): '''Receive data from the requesting HTTP client.''' status = response.get_status() if status == '100 Continue': stream = self.environ.get('wsgi.input') or io.BytesIO() body = yield stream.read() response.transport.write(body) if response.parser.is_headers_complete(): if self._headers is None: headers = self.remove_hop_headers(response.headers) self._headers = Headers(headers, kind='server') # start the response self.start_response(status, list(self._headers)) body = response.recv_body() if response.parser.is_message_complete(): self._done = True self.queue.put(body) def error(self, failure): '''Handle a failure.''' if not self._done: uri = self.environ['RAW_URI'] msg = 'Oops! Could not find %s' % uri html = wsgi.HtmlDocument(title=msg) html.body.append('<h1>%s</h1>' % msg) data = html.render() resp = wsgi.WsgiResponse(504, data, content_type='text/html') self.start_response(resp.status, resp.get_headers(), failure.exc_info) self._done = True self.queue.put(resp.content[0]) def remove_hop_headers(self, headers): for header, value in headers: if header.lower() not in wsgi.HOP_HEADERS: yield header, value
class MessageHandler(ws.WS): def __init__(self): self.queue = Queue() def get(self): return self.queue.get() def on_message(self, websocket, message): self.queue.put(message)
def test_maxsize_callback(self): q = Queue(maxsize=2) self.assertEqual(q.maxsize, 2) yield self. async .assertEqual(q.put('hello'), None) yield self. async .assertEqual(q.put('ciao'), None) result = maybe_async(q.put('bla')) self.assertEqual(q.qsize(), 2) item = yield q.get() self.assertEqual(item, 'hello') self.assertEqual(q.qsize(), 2)
def test_async_get(self): q = Queue() self.assertEqual(q.qsize(), 0) item = maybe_async(q.get()) self.assertIsInstance(item, Deferred) result = yield q.put('Hello') self.assertEqual(result, None) self.assertTrue(item.done()) self.assertEqual(item.result, 'Hello') self.assertEqual(q.qsize(), 0)
def test_maxsize_callback(self): q = Queue(maxsize=2) self.assertEqual(q.maxsize, 2) yield self.async.assertEqual(q.put('hello'), None) yield self.async.assertEqual(q.put('ciao'), None) result = maybe_async(q.put('bla')) self.assertEqual(q.qsize(), 2) item = yield q.get() self.assertEqual(item, 'hello') self.assertEqual(q.qsize(), 2)
def test_async_get(self): q = Queue() self.assertEqual(q.qsize(), 0) item = maybe_async(q.get()) self.assertIsInstance(item , Deferred) result = yield q.put('Hello') self.assertEqual(result, None) self.assertTrue(item.done()) self.assertEqual(item.result, 'Hello') self.assertEqual(q.qsize(), 0)
def test_sync(self): q = Queue() self.assertEqual(q.qsize(), 0) result = yield q.put('hello') self.assertEqual(result, None) self.assertEqual(q.qsize(), 1) item = yield q.get() self.assertEqual(item, 'hello') self.assertEqual(q.qsize(), 0) result = yield q.put('ciao') self.assertEqual(result, None) self.assertEqual(q.qsize(), 1)
class Echo(WS): def __init__(self): self.queue = Queue() def get(self): return self.queue.get() def on_message(self, ws, message): return self.queue.put(message) def on_ping(self, ws, body): super(Echo, self).on_ping(ws, body) return self.queue.put('PING: %s' % body.decode('utf-8')) def on_pong(self, ws, body): return self.queue.put('PONG: %s' % body.decode('utf-8'))