HiveNetCore.queue_hivenet module¶
队列任务处理模块
- class HiveNetCore.queue_hivenet.EnumQueueType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[源代码]¶
基类:
Enum队列类型
- FIFO = 0¶
- LIFO = 1¶
- PRIORITY = 2¶
- class HiveNetCore.queue_hivenet.MemoryQueue(**kwargs)[源代码]¶
基类:
QueueFwQueueFw的内存基础队列实现
重新实现Python基础的Queue、LifoQueue和PriorityQueue 注意: 该队列只能线程共享, 不能进程共享, 如果需进程共享, 可直接使用multiprocessing.Queue
- 参数
kwargs (**kwargs) –
初始化参数, 定义如下:
queue_type {EnumQueueType} - 队列类型, 默认为EnumQueueType.FIFO
maxsize=0 {int} - 队列深度, 如果为0代表不限制队列大小
bucket_mode=False {bool} - 启动水桶模式, 队列大小达到上限后插入数据可自动丢弃老数据(get出来并丢弃)
- class HiveNetCore.queue_hivenet.PriorityObject(obj, priority=0)[源代码]¶
基类:
object优先级对象类, 将一个对象封装为可按优先级排序的对象, 供MemoryQueue的PRIORITY类型队列使用
- class HiveNetCore.queue_hivenet.QueueFw(**kwargs)[源代码]¶
基类:
ABC基础队列处理框架, 用于定义队列的公共方法, 便于扩展不同的队列类型(例如支持各类MQ)
框架基类重写了python基础库的Queue, 调用方法与Queue一致, 但增加了动态参数kwargs的扩展
- 参数
kwargs (**kwargs) –
队列初始化动态参数, 定义如下:
maxsize=0 {int} - 队列深度, 如果为0代表不限制队列大小
bucket_mode=False {bool} - 启动水桶模式, 队列大小达到上限后插入数据可自动丢弃老数据(get出来并丢弃)
注: 其他定义参考具体的实例化类
- __init__(**kwargs)[源代码]¶
构造函数
- 参数
kwargs (**kwargs) –
队列初始化动态参数, 定义如下:
maxsize=0 {int} - 队列深度, 如果为0代表不限制队列大小
bucket_mode=False {bool} - 启动水桶模式, 队列大小达到上限后插入数据可自动丢弃老数据(get出来并丢弃)
注: 其他定义参考具体的实例化类
- empty(**kwargs)[源代码]¶
判断队列是否为空
- 参数
kwargs (**kwargs) – 其他判断参数, 具体参数定义参考具体实现类
- 返回
如果队列为空, 返回True,反之返回False
- 返回类型
bool
- full(**kwargs)[源代码]¶
判断队列是否已满(无空闲空间)
- 参数
kwargs (**kwargs) – 其他判断参数, 具体参数定义参考具体实现类
- 返回
如果队列为空, 返回True,反之返回False
- 返回类型
bool
- get(block=True, timeout=None, **kwargs)[源代码]¶
从队列中获取对象
- 参数
block (bool) – default=True, 是否阻塞, 如果为True则待真正获取到数据才返回
timeout (number) – default=None, 阻塞超时时间, 单位为秒
kwargs (**kwargs) – 其他获取参数, 具体参数定义参考具体实现类
- 引发
queue.Empty – 遇到队列为空时, 非阻塞模式直接抛出异常, 阻塞模式超时后抛出异常
- get_nowait(**kwargs)[源代码]¶
采取不阻塞方式从队列中获取对象
- 参数
kwargs (**kwargs) – 其他获取参数, 具体参数定义参考具体实现类
- 引发
queue.Empty – 遇到队列为空时, 直接抛出异常
- property init_kwargs¶
获取初始化队列的参数
@property {dict}
- join(**kwargs)[源代码]¶
队列完成阻塞函数, 用于支持生产者消费者模型处理
该函数必须与task_done通知配套使用, 当put一个任务到队列中, 待执行任务数+1;执行一次task_done, 待执行任务数-1 当待执行任务数为0时, join执行退出
- 参数
kwargs (**kwargs) – 参数, 具体参数定义参考具体实现类
- put(item, block=True, timeout=None, **kwargs)[源代码]¶
将对象放入队列中
- 参数
item (object) –
要放进队列中的对象
注意: 该对象建议是基础类型, 可序列化, 避免使用MQ等中间件传输后有问题
block (bool) – default=True, 是否阻塞, 如果为True则待队列有空闲空间时放入成功才返回
timeout (number) – default=None, 阻塞超时时间, 单位为秒
kwargs (**kwargs) – 其他放置参数, 具体参数定义参考具体实现类
- 引发
queue.Full – 遇到队列无空间放置时, 非阻塞模式直接抛出异常, 阻塞模式超时后抛出异常