目录api客户端的python通用代码。

directory-client-core的Python项目详细描述


目录客户端核心

code-climate-imagecircle-ci-imagecodecov-imagepypi-imagesemver-image

目录客户端核心。

目录api客户端的通用代码。

要求

安装

pip install directory-client-core

用法

fromdirectory_client_core.baseimportAbstractAPIClientclassMyAPIClient(AbstractAPIClient):version=1# passed as a header in all requestsdefget_something(self):returnself.get(...)defcreate_sometime(self):returnself.post(...)client=MyAPIClient(base_url='https://example.com/',api_key='test',sender_id='test-sender-id',timeout=2,)response=client.get_something()

缓存

decoratordirectory_client_core.helpers.fallback可用于缓存来自远程服务器的响应,如果远程服务器不返回最新的实时内容(可能超时,可能服务器已关闭),则允许稍后使用缓存的内容。这个decorator还保存了etag响应头,以便以后在请求和304(未修改)响应中公开它们,并提供已经缓存的内容。

# settings.py
DIRECTORY_CLIENT_CORE_CACHE_EXPIRE_SECONDS = 60 * 60 * 24 * 30  # 30 days

# client.py

from django.core.cache import caches

from directory_client_core import helpers
from directory_client_core.base import AbstractAPIClient


class APIClient(AbstractAPIClient):
    version = 1

    @helpers.fallback(cache=caches['fallback'])
    def get(self, *args, **kwargs):
        return super().get(*args, **kwargs)

    def retrieve(self):
        return self.get(url='/some/path/')

当发生缓存事件时,fallback创建日志项。为了减少噪音,可以在“设置”中设置DIRECTORY_CLIENT_CORE_CACHE_LOG_THROTTLING_SECONDS。这将导致每段时间只创建一次日志事件。默认情况下,这意味着每24小时显示一次“缓存命中url x”(对于给定的url)。

开发

$ git clone https://github.com/uktrade/directory-client-core
$ cd directory-client-core
$ make test_requirements

发布到pypi

包应该在合并到主服务器时发布到pypi。如果您需要在本地执行此操作,请从rattic获取凭据并将环境变量添加到主机:

Setting
DIRECTORY_PYPI_USERNAME
DIRECTORY_PYPI_PASSWORD

然后运行以下命令:

make publish

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java例外。Lang.Stringindexoutofboundsexception索引超出范围(0)   java Spring引导Freemarker从2.2.0升级失败   重构Java反模式名称?包含对象的对象包含。。。等   用java处理JDBC可能出现的死锁的最佳方法   java无法访问主线程上的数据库,因为它可能会在很长一段时间内锁定UI   java如何将固定大小的画布包装在边框窗格中的滚动窗格居中?   java解析xsd文件后得到空结果   在html页面中表示XML文件的java   socketjava对象流   sql Java越界异常数据库   JavaJBoss7.1.1不会在Mavericks上启动   Twincat ADS事件驱动读取在一段时间后停止工作(Java)   java MyBatis使用生成的ID插入所有   Mojave上缺少MacOS Java控制面板   JavaGuice:如果多次注入相同的依赖项,是否注入了该依赖项的相同实例?