From 13f46abf8659fa5f2e4b2b3fd6ca0b677a245ea9 Mon Sep 17 00:00:00 2001 From: sideffect0 Date: Fri, 29 Jul 2016 20:56:23 +0530 Subject: add custom asyncio loop --- bottle.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/bottle.py b/bottle.py index 5a84551..73e99ce 100644 --- a/bottle.py +++ b/bottle.py @@ -3294,17 +3294,25 @@ class BjoernServer(ServerAdapter): from bjoern import run run(handler, self.host, self.port) +class AsyncioServerAdapter(ServerAdapter): + """ Extend ServerAdapter for adding custom event loop """ + def get_event_loop(self): + pass -class AiohttpServer(ServerAdapter): +class AiohttpServer(AsyncioServerAdapter): """ Untested. aiohttp https://pypi.python.org/pypi/aiohttp/ """ + def get_event_loop(self): + import asyncio + return asyncio.new_event_loop() + def run(self, handler): import asyncio from aiohttp.wsgi import WSGIServerHttpProtocol - self.loop = asyncio.new_event_loop() + self.loop = self.get_event_loop() asyncio.set_event_loop(self.loop) protocol_factory = lambda: WSGIServerHttpProtocol( -- cgit v1.2.1 From 9c583d47f1132775a8928328f7d3c2dae275081c Mon Sep 17 00:00:00 2001 From: sideffect0 Date: Fri, 29 Jul 2016 20:56:52 +0530 Subject: add uvloop --- bottle.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bottle.py b/bottle.py index 73e99ce..7d3b1dd 100644 --- a/bottle.py +++ b/bottle.py @@ -3332,6 +3332,13 @@ class AiohttpServer(AsyncioServerAdapter): except KeyboardInterrupt: self.loop.stop() +class AiohttpUVLoopServer(AiohttpServer): + """uvloop + https://github.com/MagicStack/uvloop + """ + def get_event_loop(self): + import uvloop + return uvloop.new_event_loop() class AutoServer(ServerAdapter): """ Untested. """ @@ -3366,6 +3373,7 @@ server_names = { 'rocket': RocketServer, 'bjoern': BjoernServer, 'aiohttp': AiohttpServer, + 'uvloop': AiohttpUVLoopServer, 'auto': AutoServer, } -- cgit v1.2.1 From 70368391c045f57a7b1b643c826da2b7c6da77dc Mon Sep 17 00:00:00 2001 From: sideffect0 Date: Fri, 29 Jul 2016 21:06:11 +0530 Subject: add test case for uvloop --- test/test_server.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/test_server.py b/test/test_server.py index c89bb5a..b566e27 100644 --- a/test/test_server.py +++ b/test/test_server.py @@ -129,3 +129,6 @@ class TestBjoernServer(TestServer): class TestAiohttpServer(TestServer): server = 'aiohttp' + +class TestAiohttpServer(TestServer): + server = 'uvloop' -- cgit v1.2.1