Python 如何正确定义gevent功能是否可用?
我正在实现可重用的python模块,它利用gevent处理异步http请求。如果gevent不可用,那么我们将返回同步请求。现在我的结局是:Python 如何正确定义gevent功能是否可用?,python,gevent,Python,Gevent,我正在实现可重用的python模块,它利用gevent处理异步http请求。如果gevent不可用,那么我们将返回同步请求。现在我的结局是: _use_gevent = False try: import gevent # gevent 1.0bN renamed coros to lock try: from gevent.lock import Semaphore except ImportError: from gevent
_use_gevent = False
try:
import gevent
# gevent 1.0bN renamed coros to lock
try:
from gevent.lock import Semaphore
except ImportError:
from gevent.coros import Semaphore
# Verify gevent has patched os. If not we just don't use gevent.
import os
if 'gevent' in os.fork.__module__:
_use_gevent = True
except ImportError:
pass
这是定义gevent是否可用及其补丁是否实际应用的正确方法吗?您可以检查
sys.modules['gevent']
此外,您还可以检查
gevent.\uu版本\uuu
以确定是否必须导入gevent.lock或gevent.coros。我认为更典型的做法是由用户指定是否将gevent用作命令行选项或类似选项,但如果您确实想进行自动检测,我看不出您的代码有任何明显的错误。