欧洲专利局开放专利服务api的python客户端
python-epo-ops-client的Python项目详细描述
python epo ops客户端
python epo ops client是一个 访问欧洲专利局的开放专利 服务("ops")v.3.2(基于参考指南的 v 1.3.4)。
importepo_opsclient=epo_ops.Client(key='abc',secret='xyz')# Instantiate clientresponse=client.published_data(# Retrieve bibliography datareference_type='publication',# publication, application, priorityinput=epo_ops.models.Docdb('1000000','EP','A1'),# original, docdb, epodocendpoint='biblio',# optional, defaults to biblio in case of published_dataconstituents=[]# optional, list of constituents)
功能
python_epo_ops_客户端抽象了访问epo的复杂性 OPS:
- 正确格式化请求
- 将配额问题冒泡为正确的http错误
- 自动处理令牌身份验证和续订
- 正确处理节流阀
- 添加可选缓存以将对OPS服务器的影响降至最低
python-epo-ops-client有两个主要层:client和 中间件。
客户机
客户端包含所有格式化和令牌处理逻辑,并且 您将主要与之互动的内容。
当您发出请求时,响应是a 请求。响应 对象。 如果 response.status_code!=200 然后a 请求。httperror 会有例外-你有责任处理这些 如果你想例外。处理的一个案子是 访问令牌已过期:在这种情况下,客户端将自动 处理HTTP 400状态并续订令牌。
请注意,客户端不会尝试解释 ops,所以您有责任解析 你自己的目的。
当ops配额为 超过,它们都在 epo_ops.exceptions 模块中,并且 requests.httperror 的子类,因此提供相同的 行为:
- 需要单独报价
- 已注册的QuotaPerWeekeXceed
同样,由您分析响应并决定要做什么。
目前客户端知道如何发出以下请求 服务:
<表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 客户端方法 API终点 节流阀 < /广告> <正文> 系列(参考类型,输入,端点=无, 成分=无) 家庭 inpadoc 图像(路径,范围=1, 扩展名为tiff') 发布的数据/图像 图像 编号(参考类型、输入、输出格式) 号码服务 其他 发布的数据(参考类型,输入, 端点='biblio', 成分=无) 公布数据 检索 已发布的数据搜索(cql,range\u begin=1, 范围=25,成分=无) 发布数据/搜索 搜索 寄存器(参考类型,输入, 成分=['biblio']) 注册 其他 寄存器搜索(cql,range_begin=1, 范围=25) 注册/搜索 其他 寄存器搜索(cql,range_begin=1, 范围=25) 注册/搜索 其他 <表>有关详细信息,请参阅 操作指南 或使用 开发人员区域 。信息 如何使用每项服务。
请通过增强 epo ops.api.client 类:
- 法律服务
- 批量操作
中间件
所有请求和响应都通过每个中间件对象传递 在client.middlewares中列出。请求按顺序处理 列出,并按 相反的顺序处理响应。
每个中间件都应该子类化并实现 处理请求 和 处理响应 方法。
有两个现成的中间件类:throttler和dogpile。 throttler负责ops节流规则,并将延迟 因此提出要求。dogpile是一个可选的缓存,它将缓存所有 HTTP状态200、404、405和413响应。
默认情况下,如果您希望 启用缓存:
importepo_opsmiddlewares=[epo_ops.middlewares.Dogpile(),epo_ops.middlewares.Throttler(),]client=epo_ops.Client(key='key',secret='secret',middlewares=middlewares,)
请注意,在大多数情况下,应该首先使用缓存中间件。
狗桩
dogpile基于(令人惊讶的)dogpile.cache。默认情况下是 用超时为2周的DBMBackend区域实例化。
dogpile有三个可选的实例化参数:
- 区域 :您可以传递任何有效的 dogpile.cache region 想要后端缓存
- kwargs_handlers :关键字参数处理程序的列表,它是 将用于按顺序处理传递给请求对象的Kwargs 提取用于生成缓存键的元素。目前一个 处理程序已实现(默认情况下已实例化)以确保 范围请求头是缓存键的一部分。
- http状态代码 喜欢缓存。默认情况下,200、404、405和413个响应是 缓存。
注意 :如果要使用 它, pip在项目中安装dogpile.cache 。
节流阀
节流器包含处理不同节流的所有逻辑 情节。因为操作限制是基于一分钟滚动窗口的, 我们必须坚持历史数据(至少在过去一分钟内如此) 以便知道正确的请求频率。每个节流阀 必须用存储对象实例化。
存储
存储对象负责:
- 知道如何根据每个请求更新历史记录 ( storage.update() ),确保观察一分钟滚动 窗口规则。
- 计算在发出下一个请求之前等待多长时间 ( 存储.delay_for() )。
目前唯一的存储后端provded是sqlite,但是你可以 轻松编写自己的存储后端(如文件、redis等)。到 使用自定义存储类型,只需在 实例化节流器对象。见 epo ops.middlewares.throttle.storages.storage 了解更多信息 实施细节。
测试
使用pytest编写测试。运行测试:
- 使用EPO注册OPS用户登录
- 创建应用程序
- 在apiary上查找模拟服务器url
- 设置apiary_url、ops_key和ops_secret环境 相应的变量
- 进行测试
测试必须在工作的Internet连接下运行,因为两个操作 模拟养蜂场服务已在线。