python - 如何摆脱无法杀死的 Freeswitch channel

标签 python server client twisted freeswitch

从Freeswitch 1.2.9 (1.2.9+git~20130506T233047Z~7c88f35451) 升级到Freeswitch 1.4.21 (1.4.21-35~64bit) 后,freeswitch 挂断后停止掉线,当我们尝试执行手动 uuid_kill,它给了我们这个可爱的错误:

-ERR No such channel!

即使显示 channel 清楚地显示该 channel 。从jira.freeswitch.com上看到的bug来看,好像是代码的问题。关于我们的环境/代码的更多信息:

我们有一个连接到客户端的 python 扭曲循环,因此客户端可以在服务器上运行命令,反之亦然。一旦那个扭曲的连接终止(客户端关闭/断开连接), channel 也会被终止,但我们需要 channel 在此之前终止,因为我们每秒进行大量调用并且需要它们在另一个时终止端断开。我们不能在每次通话结束时关闭并重新打开客户端,或者重新连接,因为那样会花费太多时间,并且会破坏我们使用该软件的目的。

再一次,当我们改用 apt-get 而不是直接从源代码安装 freeswitch 服务器时,这个错误才开始发生。这使我们能够以极快的速度启动和运行新服务器,并且我们宁愿不花额外的时间来使用我们以前的方法。请告诉我您是否有任何想要查看的代码,并询问您需要的任何说明,但我们真的希望尽快修复此问题。提前致谢!

编辑:为进一步说明,我们主要使用 mod_callcentermod_conferencemod_sofia 与我们的软件。

编辑 2:为了更清楚一点,我们在 Ubuntu 14.04 服务器上运行它

我们正在使用 ESL 连接从 python 连接和运行 freeswitch 中的命令,我们认为这是问题的根源。我们尝试退出连接,但这会破坏两个 channel 。

此外,Jira 上已针对此问题提交的所有错误都已关闭,因为它们不是错误。我想我在这里可能会更成功一些,因为这是一个编程类型的问题。

最佳答案

您需要在测试环境中重现问题并将错误报告提交给 Jira。充其量你也应该尝试用最新的 master 分支重现它(只支持 Debian 8): https://freeswitch.org/confluence/display/FREESWITCH/Debian+8+Jessie

我在使用 mod_perl 时遇到了类似的问题,一个 Perl 对象引用了一个 session ,但它没有被正确销毁(如果我没记错的话,我有两个 Perl 对象附加到同一个 session )。这导致无法关闭的 channel 。

我想您在您的应用程序和 FreeSWITCH 之间使用了 ESL 连接,对吗?

关于python - 如何摆脱无法杀死的 Freeswitch channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320263/

相关文章:

command-line - 在命令行中使用 swipl 运行 prolog 代码

git - Mac OS X 上是否有任何好的图形化 Git 和 Hg/Mercurial 客户端?

rest - 使用 Advanced Rest Client Google Chrome Api 上传文件

python - Pyside 或 PyQt 支持 Qt 5.0 和 Qt Quick 2

python - 如果索引不同,如何停止在 Pandas 中移动列

Java 客户端服务器应用程序 - 地址已在使用 : connect

python - neo4j BOLT 检查连接是否打开并计算连接数

android - 我需要在客户端将 GCM 迁移到 FCM 吗?

python - 使用python以指定格式绘制大数据

Python BeautifulSoup findAll 通过 "class"属性