Merge branch 'feat/optional-uvloop-use' of github.com:prryplatypus/sanic into feat/optional-uvloop-use
This commit is contained in:
commit
575837d5ef
@ -450,3 +450,79 @@ def test_custom_context():
|
||||
app = Sanic("custom", ctx=ctx)
|
||||
|
||||
assert app.ctx == ctx
|
||||
|
||||
|
||||
def test_app_uvloop_config(caplog):
|
||||
if uvloop_installed():
|
||||
asyncio.set_event_loop_policy(None)
|
||||
environ["SANIC_USE_UVLOOP"] = "false"
|
||||
|
||||
app = Sanic("dont_use_uvloop")
|
||||
|
||||
@app.get("/")
|
||||
def _(request):
|
||||
assert not isinstance(
|
||||
asyncio.get_event_loop_policy(),
|
||||
uvloop.EventLoopPolicy
|
||||
)
|
||||
return text("ok")
|
||||
|
||||
app.test_client.get("/")
|
||||
del environ["SANIC_USE_UVLOOP"]
|
||||
|
||||
app = Sanic("use_uvloop")
|
||||
|
||||
@app.get("/")
|
||||
async def _(request):
|
||||
assert isinstance(
|
||||
asyncio.get_event_loop_policy(),
|
||||
uvloop.EventLoopPolicy
|
||||
)
|
||||
return text("ok")
|
||||
|
||||
app.test_client.get("/")
|
||||
|
||||
asyncio.set_event_loop_policy(None)
|
||||
|
||||
environ["SANIC_NO_UVLOOP"] = "true"
|
||||
app = Sanic("use_uvloop_with_no_uvloop_set")
|
||||
|
||||
with caplog.at_level(logging.WARNING):
|
||||
@app.get("/")
|
||||
async def _(request):
|
||||
assert isinstance(
|
||||
asyncio.get_event_loop_policy(),
|
||||
uvloop.EventLoopPolicy
|
||||
)
|
||||
return text("ok")
|
||||
|
||||
app.test_client.get("/")
|
||||
|
||||
del environ["SANIC_NO_UVLOOP"]
|
||||
asyncio.set_event_loop_policy(None)
|
||||
|
||||
assert caplog.records[0].message == (
|
||||
"You are running the app using uvloop, but the "
|
||||
"'SANIC_NO_UVLOOP' environment variable (used to opt-out "
|
||||
"of installing uvloop with Sanic) is set to true. If you "
|
||||
"want to disable uvloop with Sanic, set the 'USE_UVLOOP' "
|
||||
"configuration value to false."
|
||||
)
|
||||
|
||||
elif not OS_IS_WINDOWS:
|
||||
app = Sanic("wants_but_cant_use_uvloop")
|
||||
|
||||
with caplog.at_level(logging.WARNING):
|
||||
@app.get("/")
|
||||
async def _(request):
|
||||
return text("ok")
|
||||
app.test_client.get("/")
|
||||
|
||||
assert caplog.records[0].message == (
|
||||
"You are trying to use uvloop, but uvloop is not "
|
||||
"installed in your system. In order to use uvloop "
|
||||
"you must first install it. Otherwise, you can disable "
|
||||
"uvloop completely by setting the 'USE_UVLOOP' "
|
||||
"configuration value to false. The app will now continue "
|
||||
"to run without using uvloop."
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user