hub 是 Eventlet’s event loop的主要部分,用于分配I/O 事件 和调度绿色线程。

Eventlet 有多种hub实现,现支持一下几种:

epoll

poll

selects

pyevent

pyevent是基于libevent,因此这四种pyevent最快。默认是禁止的。

eventlet.hubs.use_hub(hub=None)

配置使用哪种hub。确保要在I/O操作前调用,在程序调用能够清除先前的hub,而且已经发生IO操作将被忽略。

from eventlet import hubs
hubs.use_hub("pyevent")

eventlet.hubs.use_hub() 仅仅用于当前进程,当使用多进程时须要在自己的在进程開始调用 eventlet.hubs.use_hub()确保不与父进程或者兄弟进程共享hub

eventlet.hubs.get_hub()获取当前hub

eventlet.hubs.get_default_hub()

eventlet.hubs.trampoline(fd, read=None, write=None, timeout=None, timeout_exc=<class
'eventlet.timeout.Timeout'>)

挂起当前协程直到socket对象或者文件描写叙述符被读写 ,能够设置超时。

05-11 13:19