目录api客户端的python通用代码。
directory-client-core的Python项目详细描述
目录客户端核心
目录客户端核心。
目录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