Skip to content

Commit

Permalink
fix async run, add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
r0fls committed Jan 30, 2017
1 parent 7257e57 commit 41da793
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 1 deletion.
3 changes: 2 additions & 1 deletion sanic/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,8 @@ def serve(host, port, request_handler, error_handler, before_start=None,
:param protocol: Subclass of asyncio protocol class
:return: Nothing
"""
loop = async_loop.new_event_loop()
loop = loop or async_loop.new_event_loop()
asyncio.set_event_loop_policy(async_loop.EventLoopPolicy())
asyncio.set_event_loop(loop)

if debug:
Expand Down
25 changes: 25 additions & 0 deletions tests/test_async_run.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from sanic import Sanic
from sanic.response import json
import asyncio
import requests
from threading import Thread
import pytest
import sys

@pytest.mark.skipif(sys.version_info < (3, 6),
reason="fails on python 3.5 with travis")
def test_async_run():
app = Sanic(__name__)

@app.route("/")
async def test(request):
return json({"answer": "42"})

server = app.create_server(host="0.0.0.0", port=8001)
task = asyncio.ensure_future(server)
loop = asyncio.get_event_loop()
t = Thread(target=loop.run_forever)
t.start()
res = requests.get('http://localhost:8001')
loop.stop()
assert res.json()['answer'] == '42'
18 changes: 18 additions & 0 deletions tests/test_loop_policy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from sanic import Sanic
from sanic.response import text
from sanic.utils import sanic_endpoint_test
import asyncio
import uvloop

def test_loop_policy():
app = Sanic('test_loop_policy')

@app.route('/')
def test(request):
return text("OK")

server = app.create_server()

request, response = sanic_endpoint_test(app)
assert isinstance(asyncio.get_event_loop_policy(),
uvloop.EventLoopPolicy)
1 change: 1 addition & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ deps =
aiohttp
pytest
beautifulsoup4
requests

commands =
pytest tests {posargs}
Expand Down

0 comments on commit 41da793

Please sign in to comment.