executor module

该模块定义了 RPC 任务执行器

服务器模块 server 将来自 smartbus 的请求传递给执行器类 Executor 的实例, 执行器解析请求的 JSON RPC 格式,并分配执行体,在线程池中执行, 然后返回结果。

date:2013-12-14
author:刘雪彦 <lxy@hesong.net>
class executor.Executor(queue_maxsize=0, pool_processes=None, pool_maxtasksperchild=None)

基类:logging.handlers.QueueListener

smarbus JSON RPC 请求执行器

使用进程池执行 RPC 请求

参数:
  • queue_maxsize – 任务队列最大值 默认为0,表示无限制。
  • pool_processes – 执行器池的最大数量 默认为 none,表示使用 CPU 核心数量作为其最大值
  • pool_maxtasksperchild – 进程池最大执行数量 默认为 None,表示无限制。超过该值,则重启子进程。仅对进程池模型有效。

在接收到 smartbus 请求后,需要向这个队列放置数据,数据的格式是: client, pack_info, txt 分别是:收到数据的 smartbus 客户端的实例,数据包附加信息,数据文本。

收到数据后,本类型的实例将按照 JSON-RPC 格式解析数据,并执行 JSON RPC 请求,最后将执行结果通过 smartbus 客户端进行返回。 返回数据格式是符合 JSON RPC 标准的字符串。

handle(record)
put(client, pack_info, txt)
start()
stop()