任意python函数的超时。
pto的Python项目详细描述
python的简单超时
pto是麻省理工学院授权的图书馆,可以方便地对 不公开功能本身的函数的运行时。 我的灵感来自于一个需要阻止计划的工作也运行的需要 在我按小时付款的站台上。也许你只是需要 结束一个不稳定的网络呼叫。不管怎样,都很简单:
>>> from pto import timeout >>> @timeout(5) ... def slow_func(): ... while True: ... pass ... >>> slow_func() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 2, in slow_func File "pto/__init__.py", line 97, in _timeout result = f(*args, **kwargs) File "<stdin>", line 3, in slow_func File "pto/__init__.py", line 89, in handle_timeout raise TimedOutException pto.TimedOutException: u'Timed Out'
灵感
我是受Chris Wright’s recipe的启发才这么做的。我喜欢 食谱,但我厌倦了复制和粘贴,我不喜欢 装饰器没有保留签名、docstring等。
注意事项
这只适用于类unix平台。抱歉,Windows用户。我很乐意 为了支持windows,但是秘密的sauce(signal.alarm来自std lib)在windows上不起作用。
这并不是设计用来处理线程的,因为只有 主线程将用python接收信号。不管怎样,如果你用 线程,您可能有其他方法来处理超时。
如果要在静态方法或类方法上设置超时,则需要 首先在方法上设置超时,然后装饰包装的 使用@staticmethod或@classmethod的方法。有一些例子 test_pto.py。
我很确定lib在python 2.4中可以工作,但是我没有 安装在周围测试。如果有人想自愿核实 Lib 2.4,请联系我。
安装
要安装动力输出轴,只需:
$ pip install pto
或者,如果您必须这样做:
$ easy_install pto
但是,你真的不应该这么做。
历史记录
0.0.7(2013-03-14)
- 增强忽略
- 启用setup.py测试
- 为Python3与Python2自定义依赖关系
- 将Travis CI状态图像添加到readme.rst
0.0.6(2013-03-13)
- 添加单元测试
- 启用Travis CI
- 在readme.rst中添加更多的注意事项/gotchas
- 更新示例用法
- 更新trove分类器
0.0.5(2013-03-13)
- 在manifest.in中包含许可证的正确路径
0.0.4(2013-03-13)
- 在PYPI页面上嵌入许可证。
0.0.3(2013-03-13)
- pip可以实际安装的第一个版本。
0.0.2(2013-03-12)
- 初稿
0.0.1(2013-03-11)
- 概念