Better Twisted reactor detection

This commit is contained in:
Andrew Godwin 2018-02-04 12:18:44 -08:00
parent 0f8f731b2c
commit 826a8ce0de

View File

@ -2,15 +2,19 @@
import sys # isort:skip import sys # isort:skip
import warnings # isort:skip import warnings # isort:skip
from twisted.internet import asyncioreactor # isort:skip from twisted.internet import asyncioreactor # isort:skip
if "twisted.internet.reactor" in sys.modules: current_reactor = sys.modules.get("twisted.internet.reactor", None)
if current_reactor is not None:
if not isinstance(current_reactor, asyncioreactor.AsyncioSelectorReactor):
warnings.warn( warnings.warn(
"Something has already installed a Twisted reactor. Attempting to uninstall it; " + "Something has already installed a non-asyncio Twisted reactor. Attempting to uninstall it; " +
"you can fix this warning by importing daphne.server early in your codebase or " + "you can fix this warning by importing daphne.server early in your codebase or " +
"finding the package that imports Twisted and importing it later on.", "finding the package that imports Twisted and importing it later on.",
UserWarning, UserWarning,
) )
del sys.modules["twisted.internet.reactor"] del sys.modules["twisted.internet.reactor"]
asyncioreactor.install() asyncioreactor.install()
else:
asyncioreactor.install()
import asyncio import asyncio
import logging import logging