gevent.events --发布/订阅事件基础结构#

发布/订阅事件基础结构。

当某些“有趣”的事情在流程的生命周期中发生时,gevent将“发布”一个事件(一个对象)。该事件将传递给感兴趣的“订户”(接受一个参数的函数,即事件对象)。

更高层次的框架可以以此为基础,并在其上建立更丰富的模型。

zope.event 将用于提供 notify and subscribers. See zope.event.classhandler for a simple class-based approach to subscribing to a filtered list of events, and see zope.component 对于更高层次、更灵活的系统。如果您使用其中一个系统,通常不希望直接修改 subscribers .

在 1.3b1 版本加入.

在 23.7.0 版本发生变更: 现在使用 importlib.metadata 而不是 pkg_resources 来定位入口点。

exception DoNotPatch[源代码]#

基类:BaseException

will-patch事件的订户可以引发此类的实例,以告诉gevent不要修补该特定项。

interface IEventLoopBlocked[源代码]#

当事件循环被阻塞时发出的事件。

此事件在监视器线程中发出。

greenlet#

绿色小轮似乎阻塞了环路。

blocking_time#

循环被阻塞的大约时间(秒)。

info#

提供额外信息的字符串序列。

interface IGeventDidPatchAllEvent[源代码]#

延伸: gevent.events.IGeventDidPatchEvent

在gevent修补了所有模块(包括内置模块和插件/订户提供的模块)之后发出的事件。

的值 来源目标 属性未定义。

interface IGeventDidPatchBuiltinModulesEvent[源代码]#

延伸: gevent.events.IGeventDidPatchEvent

发出的事件 之后 内置模块已修补。

如果您要对第三方库进行monkey-patch,这通常是需要监听的事件。

的值 来源目标 属性未定义。

patch_all_arguments#

所有参数的字典 gevent.monkey.patch_all . 不应修改此词典。

patch_all_kwargs#

一本关于 gevent.monkey.patch_all . 不应修改此词典。

interface IGeventDidPatchEvent[源代码]#

延伸: gevent.events.IGeventPatchEvent

发出的事件 之后 Gevent修补了一些东西。

interface IGeventDidPatchModuleEvent[源代码]#

延伸: gevent.events.IGeventDidPatchEvent

发出的事件 之后 Gevent已完成对特定模块的修补。

module_name#

正在修补的模块的名称。这和 target.__name__ .

interface IGeventPatchEvent[源代码]#

所有monkey patch事件的根gevent发出。

source#

包含修补程序的源对象。

target#

要修补的目标对象。

interface IGeventWillPatchAllEvent[源代码]#

延伸: gevent.events.IGeventWillPatchEvent

发出的事件 之前 Gevent开始修补系统。

在此事件之后将是一系列 IGeventWillPatchModuleEventIGeventDidPatchModuleEvent 对于每个补丁模块。

处理完GEvent内置模块后, IGeventDidPatchBuiltinModulesEvent 将被发射。处理此事件是导入和修补第三方模块(可能触发自己的will/do修补模块事件)的理想时间。

最后,A IGeventDidPatchAllEvent 将被发送。

如果此事件的订阅服务器引发 DoNotPatch ,不进行修补。

这个 来源目标 属性具有未定义的值。

patch_all_arguments#

所有参数的字典 gevent.monkey.patch_all . 不应修改此词典。

patch_all_kwargs#

一本关于 gevent.monkey.patch_all . 不应修改此词典。

will_patch_module(module_name)#

返回名为 module_name 将被修补。

interface IGeventWillPatchEvent[源代码]#

延伸: gevent.events.IGeventPatchEvent

发出的事件 之前 格凡特猴子修补东西。

如果订阅服务器引发 DoNotPatch ,则不会修补此特定项目。

interface IGeventWillPatchModuleEvent[源代码]#

延伸: gevent.events.IGeventWillPatchEvent

发出的事件 之前 Gevent开始修补特定模块。

两个 来源目标 属性是模块对象。

module_name#

正在修补的模块的名称。这和 target.__name__ .

target_item_names#

要修补的项名称列表。这可以在适当的地方小心地修改。

interface IMemoryUsageThresholdExceeded[源代码]#

超过内存使用阈值时发出的事件。

只有当内存继续增长到阈值以上时,才会发出此事件。只有当状态或稳定状态得到纠正(内存使用率下降)后,事件才会在将来发出。

此事件在监视器线程中发出。

mem_usage#

当前进程内存使用量(字节)。

max_allowed#

允许的最大内存使用量(字节)。

memory_info#

psutil返回内存使用状态的元组。

interface IMemoryUsageUnderThreshold[源代码]#

当内存使用率在以前高于阈值后低于阈值时发出的事件。

此事件仅在首次检测到内存使用量低于阈值(之前高于阈值)时发出。如果内存使用率再次上升,则 IMemoryUsageThresholdExceeded 将广播事件,然后可以再次广播此事件。

此事件在监视器线程中发出。

mem_usage#

当前进程内存使用量(字节)。

max_allowed#

允许的最大内存使用量(字节)。

max_memory_usage#

导致上一个IMemoryUsageThresholdExceeded事件的内存使用情况。

memory_info#

psutil返回内存使用状态的元组。

interface IPeriodicMonitorThread[源代码]#

由集线器启动的定期监视线程的协定。

add_monitoring_function(function, period)#

安排 功能 大约每 时期 分数秒。

这个 功能 接收一个参数,正在监视集线器。在监视线程中调用, not 轮毂螺纹。它 不能 尝试使用gevent异步API。

如果 功能 已经是一个监视函数,然后 时期 将更新以供将来运行。

如果 时期None ,则该功能将被删除。

A 时期 不允许小于或等于零。

interface IPeriodicMonitorThreadStartedEvent[源代码]#

集线器启动定期监视线程时发出的事件。

您可以使用此事件添加其他监视功能。

monitor#

的实例 IPeriodicMonitorThread 开始了。

class EventLoopBlocked(greenlet, blocking_time, info)[源代码]#

基类:object

当事件循环被阻塞时发出的事件。

器具 IEventLoopBlocked .

class GeventDidPatchAllEvent(patch_all_arguments, patch_all_kwargs)[源代码]#

基类:_PatchAllMixin, GeventDidPatchEvent

执行 IGeventDidPatchAllEvent .

ENTRY_POINT_NAME = 'gevent.plugins.monkey.did_patch_all'#

发出此事件时调用的SETUPTOOLS入口点的名称。

class GeventDidPatchBuiltinModulesEvent(patch_all_arguments, patch_all_kwargs)[源代码]#

基类:_PatchAllMixin, GeventDidPatchEvent

执行 IGeventDidPatchBuiltinModulesEvent .

ENTRY_POINT_NAME = 'gevent.plugins.monkey.did_patch_builtins'#

发出此事件时调用的SETUPTOOLS入口点的名称。

class GeventDidPatchModuleEvent(module_name, source, target)[源代码]#

基类:GeventDidPatchEvent

执行 IGeventDidPatchModuleEvent .

ENTRY_POINT_NAME = 'gevent.plugins.monkey.did_patch_module'#

发出此事件时调用的SETUPTOOLS入口点的名称。

class GeventPatchEvent(source, target)[源代码]#

基类:object

执行 IGeventPatchEvent .

class GeventWillPatchAllEvent(patch_all_arguments, patch_all_kwargs)[源代码]#

基类:_PatchAllMixin, GeventWillPatchEvent

执行 IGeventWillPatchAllEvent .

ENTRY_POINT_NAME = 'gevent.plugins.monkey.will_patch_all'#

发出此事件时调用的SETUPTOOLS入口点的名称。

class GeventWillPatchEvent(source, target)[源代码]#

基类:GeventPatchEvent

执行 IGeventWillPatchEvent .

class GeventWillPatchModuleEvent(module_name, source, target, items)[源代码]#

基类:GeventWillPatchEvent

执行 IGeventWillPatchModuleEvent .

ENTRY_POINT_NAME = 'gevent.plugins.monkey.will_patch_module'#

发出此事件时调用的SETUPTOOLS入口点的名称。

class MemoryUsageThresholdExceeded(mem_usage, max_allowed, memory_info)[源代码]#

基类:_AbstractMemoryEvent

执行 IMemoryUsageThresholdExceeded .

class MemoryUsageUnderThreshold(mem_usage, max_allowed, memory_info, max_usage)[源代码]#

基类:_AbstractMemoryEvent

执行 IMemoryUsageUnderThreshold .

class PeriodicMonitorThreadStartedEvent(monitor)[源代码]#

基类:object

实施 IPeriodicMonitorThreadStartedEvent .

ENTRY_POINT_NAME = 'gevent.plugins.hub.periodic_monitor_thread_started'#

发出此事件时调用的SETUPTOOLS入口点的名称。

subscribers = []#

应用程序可以通过在 subscribers 名单。

订阅服务器的每个事件都是一个已发布的对象。

订阅服务器引发的异常将被传播 没有 正在运行任何剩余的订阅服务器。

这是的别名 zope.event.subscribers ;更喜欢直接使用该属性。