Python 如何正确定义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

我正在实现可重用的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.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用作命令行选项或类似选项,但如果您确实想进行自动检测,我看不出您的代码有任何明显的错误。