跳转到主要内容

Asterisk的Python接口

项目描述

pyst2 Release pyst2 Downloads pyst2 Build Snake Sketch

项目文档

http://pyst2.readthedocs.io

元信息

注意:该项目现在由Francesco Rana维护。请耐心等待,因为我还没有习惯这份工作,但我会尽我所能。非常感谢Randall Degges的出色工作。我实际上正在我的某个项目中使用这个库,所以我非常愿意提供帮助,并在可能的情况下进一步推动它的发展。我很高兴接受pull requests和按需发布版本。如果您想为该项目做出贡献,请务必如此!

目的

pyst2 包含一系列接口和库,允许从Python编程Asterisk。该库目前支持AGI、AMI以及Asterisk配置文件的解析。此外,该库还包括AGI的调试工具。

该项目是从 pyst (http://sf.net/projects/pyst/) 分支出来的,因为尝试联系项目维护者(经过多次尝试)均未果,我希望将项目更新到最新版本,修复bug,并使其更具可用性。

我的计划包括添加完整文档,重写一些核心函数,添加测试套件,并接受pull requests。

如果您是当前维护者之一,并且想要接管这个分支,请与我联系:r@rdegges.com,这样我们就可以设置好这一切了!

安装

要安装 pyst2,只需运行

$ pip install pyst2

这将自动安装库的最新版本。

文档

目前,文档仅存在于python docstrings中,您可以使用Python内置的帮助功能。

import asterisk
help (asterisk)
import asterisk.agi
help (asterisk.agi)
import asterisk.manager
help (asterisk.manager)
import asterisk.config
help (asterisk.config)

关于平台的一些说明:我们现在在 setup.py 中指定“platforms = ‘Any’”。这意味着,该包的管理部分可能在任何平台上运行。另一方面,agi脚本直接在Asterisk运行的主机上调用。由于Asterisk不运行在Windows平台上(可能永远不会),因此该包的agi部分只能在Asterisk平台上运行。

FastAGI

FastAGI支持是基于Python的原始SocketServer。要启动服务器,应该运行 python fastagi.py,使其监听localhost和默认的Asterisk FastAGI端口。这需要pyst2的最新版本。FastAGI服务器为每个请求以Forked操作运行,以尝试防止单个不良服务造成的阻塞。因此,FastAGI服务器可能比单个进程消耗更多的内存。如果您需要使用单个进程,只需取消注释相应的行。未来版本将使用配置文件来设置选项。

致谢

感谢Karl Putland编写原始包。

感谢Matthew Nicholson维护该包多年,并在他不再感兴趣时移交维护权。

感谢Randall Degges维护该项目并接受pull requests。

为pyst要做的事情

这是合并到readme文件中的原始变更日志。我不确定我是否真的想改变所有这些(特别是线程实现看起来很好)。我将在README中维护一个总结变更的部分。详细的变更将在版本控制工具(目前是git)中可用。

  • 变更日志:需要从monotone日志中更新变更日志。

  • 文档:需要更新pyst的所有内联文档。

  • manager.py:这应该转换为单线程。另外,当用户调用manager.logoff()后跟着manager.close()时,存在竞态条件。如果socket线程尚未清除_connected标志,close()函数可能还会再次调用logoff。

    应该为每个管理动作创建一个类,而不是在管理类中有一个函数。管理类应适应具有知道类的一般格式的send方法。

Matthew Nicholson在邮件列表上发文(注意:我目前不确定我会这样做,我对当前的分线程实现很满意)

对于pyst 0.3,我计划清理manager.py。代码中存在一些已知问题。没有人将这些问题报告为问题,但我个人遇到了这些问题。目前manager.py在多个线程中运行,包括主程序线程、从网络读取的线程以及事件分发线程。这导致与非线程安全代码(如MySQLdb库)出现问题时。这种设计也会在事件处理器抛出异常导致事件处理线程终止时出现问题。

第二个问题是关于发送操作的方式。每个操作都与manager对象中的一个特定函数相关联,该函数接受可能传递给该操作的所有可能参数。这使得API相对僵化,并且Manager对象很杂乱。

为了解决这些问题,我将基本上复制我的Astxx管理库(用C++编写)的设计,并使其更加Python化。每个操作将是一个不同的对象,具有处理各种任务的方法,而Manager类中有一个函数用于发送操作。这将使Manager类更加小巧且更加灵活。现有代码将被整合到单线程设计中,并提供挂钩以让库处理事件等。这些挂钩将来自主机应用程序的主循环。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分发

pyst2-0.5.1.tar.gz (25.4 kB 查看哈希值)

上传时间

构建分发

pyst2-0.5.1-py3-none-any.whl (22.3 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面