冗余服务器客户端
client-of-redundant-servers的Python项目详细描述
冗余服务器的客户端
冗余服务器的通用客户端。提出不可靠服务器请求的简单框架。 如果没有可用的服务器,则引发异常,否则返回第一个未失败服务器的结果。 支持服务器的循环、固定和随机顺序。
目的是你可以用这个来把那些本来有点乏味的东西粘在一起, 使用从clientofredundantservers继承的客户机类。
安装
pip install client-of-redundant-servers
用法
假设您有一些web服务器,所有服务器都提供相同的内容,并且您希望从任何一个服务器获取文件。 您不关心哪个服务器响应,但不希望手动查找故障并重试。
client_of_redundant_servers
允许您编写如下内容:
importrequestsimportclient_of_redundant_serversascorsfromcollectionsimportOrderedDictclassClientOfRedundantWebServers(cors.ClientOfRedundantServers):def__init__(self,url_list:list):# Super().__init__ wants a dict, but this example is so simple that# a list can be used to create an OrderedDict of None.url_dict=OrderedDict((url,None)forurlinurl_list)super().__init__(url_dict)def_get_file_func(self,url):try:r=requests.get(url)# Check for errors that didn't raise a requests.exceptionifnotr.ok:raisecors.CurrentServerFailedreturnrexceptrequests.exceptions.RequestException:raisecors.CurrentServerFaileddefget_file(self):returnself.request(self._get_file_func)# Only picking on Ubuntu because it is widely mirrored.urls=["http://badserver.example.com/badfile","http://www.mirrorservice.org/sites/cdimage.ubuntu.com/cdimage/releases/16.04/release/SHA256SUMS","http://nl.archive.ubuntu.com/ubuntu-cdimages/16.04/release/SHA256SUMS"]client=ClientOfRedundantWebServers(urls)try:r=client.get_file()print(r.text)print("*****")print("Retrieved from : "+r.url)exceptcors.AllAvailableServersFailed:print("Error! No servers were available to service the request.")
如果运行它,您将看到客户端尝试从badserver
检索文件,
但失败了,所以它继续尝试下一个可用的服务器。
请参阅“examples”目录中可能有用的一些示例。 目前有一个radius客户端正在使用pyrad 以及使用ldap3的活动目录LDAP客户端。