""" This is the main module """
from eventlet import hubs
hubs.use_hub("pyevent")
Hubs的实现是线程内的,eventlet.hubs.use_hub() 只在当前线程内起作用。当使用多线程且这些线程都有自己的 hub 时,需要在每个需要特定 hub 的线程函数前调用该函数。实际上不一定需要为每个线程指定一个hub,可以为主线程指定一个特定的hub,而让其他的线程使用默认的 hub。这种混合的配置方式也能正常工作。
也可以使用第三方的 hub 模块来取代内置的,只要将木块本身传给 eventlet.hubs.use_hub() 即可。比如:
from eventlet import hubs
from mypackage import myhub
hubs.use_hub(myhub)
eventlet.hubs.get_hub() 获得当前的event hub对象。 注: 这被认为是一个内部API,因此可能会未经弃用就发生意外的改变。 eventlet.hubs.get_default_hub() Select the default hub implementation based on what multiplexing libraries are installed. The order that the hubs are tried is: 自动选择默认的 hub 实现,尝试的顺序是:epoll、kqueue、poll、select,这里不会自动选择 pyevent hub,因为它不是Python线程安全的。 注: 这被认为是一个内部API,因此可能会未经弃用就发生意外的改变。