断路器模式的简单实现

python-circuit的Python项目详细描述


[![构建状态](https://travis-ci.org/edgeware/python-circuit.svg?branch=master)(https://travis ci.org/edgeware/python circuit)


根据michael t.nygard的《伟大的书》(release it)中的逻辑大纲设计的断路器!](http://www.amazon.com/release it production ready practical programmers/dp/0978739213)。

短期内。一段时间后,断路器将通过一个请求来探测对方是否感觉好一些。如果是,它将关闭电路并再次允许请求。否则,它将再次断开电路。

使用“context”方法选择要跟踪的对等点。
第一个参数用于标识对等方。使其成为某种
类型的字符串,因为它将用于标识日志中的对等方。


下面是一个如何使用断路器的小示例:

```python
import logging
import time

from circuit import circuit breakerset

circuit breakers=circuit breakerset(time.time,日志记录。getlogger(
“断路器”)
断路器。处理错误(值错误)


def fn(断路器):
尝试:
使用断路器。上下文('my-remote-peer'):
引发值错误('oh no')
除了断路器之外:
电路已打开,因此我们甚至没有尝试与远程服务通信。
raise
```


*` maxfail`(默认值3)--在一个时间单位内允许的秒数。
*`reset_timeout`(默认值10)--在
进入半开模式之前电路断开的秒数。


`circuit.circuitbreaker`类接受以下参数:

*`clock`--以秒为单位返回时间的可调用函数。
*`log`--用于日志记录的“logging.logger”对象。
*`error\u types`--被视为错误的错误类型列表。
*`maxfail`--在一个时间单位内允许的秒数。
*`重置“超时”--电路在进入半开模式之前断开的秒数。
*“时间单位”--采样秒数。




twisted support

注意
断路器仍然使用pythons标准日志框架。示例:

``python
import logger

logging.getlogger(
“断路器”)
```

(`twistedcircuitbreakerset`增加了对“defer.returnvalue`
的支持,后者在内部使用异常。)


许可证


版权所有2012 edgeware ab.

根据apache许可证2.0版(“许可证”)授权;
除非符合许可证的要求,否则您不得使用此文件。
您可以在


http://www.apache.org/licenses/license-2.0


获取许可证副本,除非适用法律要求或书面同意,否则根据许可证分发的软件将按“原样”分发,
无任何明示或暗示的保证或条件。
请参阅许可证,了解管辖许可的特定语言和许可证下的限制。



Hael Nygard,http://www.michaelnygard.com/,用于编写发行版!
概述断路器模式的书,http://www.edgeware.tv/,用于赞助
python circuit的开发。

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

推荐PyPI第三方库


热门话题
java ActiveMQ 5.9.0、Glassfish 3.1.2和MDB用于长时间的消息处理   从main调用的对象数组的Java字符串表示形式   java如何在iText 7中为泰国字母上方的双标记设置GPO   编译如果Java6工件是用Java6、7或8编译的,这有关系吗?   image Java KeyListener未检测到键盘输入   java找不到符号(构造函数)   java如何使Kafka使用者从特定主题分区读取Spring Boot   Java readLine()返回null   从CSV文件计算值时出现java系统错误   java如何避免处理程序。被调用后延迟(可运行运行)?   Java Do和While验证   java如何访问父类型的ArrayList中的子方法?   java如何使用Deepfirstsearch算法获得最高级别的搜索   xml使用SAX解析器Java正确构建字符串   Android片段中的java Toast显示空指针expn   如何在java中将多个文件合并到另一个新文件中?   java在运行时在JVisualVM中更改应用程序的标题   javajavax。命名。NoInitialContextException:需要在环境或sys中指定类名