问题标签 [twisted.internet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
597 浏览

python-2.7 - 从 Popen 内部(扭曲的) timer.LoopingCall() 运行 ffmpeg

我有一个 RTSP 流,我需要将其作为 HLS 重新流式传输。当 RTSP 流关闭(例如相机断开连接)时,我会显示一个蓝屏,让用户知道相机已离线。HLS 分段器单独运行,在端口 22200 上侦听传入数据包。

在python中,代码基本上归结为:

它可以正常工作 5-6 分钟,然后我看到视频停顿,如果我检查 ffmpeg 的 cpu 使用情况,它显示为 0,则 ffmpeg 输出不会改变,就像暂停一样。但是 psmon.status 显示为正在运行,并且计时器仍在运行(我看到命令行中每 2 秒弹出一次“TIMER TICK”消息。

如果我只是从命令行(而不是从 python)运行 ffmpeg 命令,那么它可以工作几个小时没问题。

有人知道扭曲的反应堆是否正在停止这个过程吗?还是 subprocess.Popen 本身的问题?或者计时器本身以某种方式出现故障(即使它进入了“监控”功能)?我有其他计时器也在同一个反应器(同一个线程)中运行,这可能是一个问题吗?

0 投票
2 回答
705 浏览

python - Python Twisted-run() 方法无法识别

以下是服务器的代码:

我收到以下错误:

我在 Windows 7 上使用 pydev 和 Eclipse。我哪里出错了?

0 投票
1 回答
1085 浏览

python-2.7 - TWISTED python - Wait for deferToThread to complete

I am new to Twisted framework, and I would like to make the program wait for the deferred thread to complete.

Is it possible to wait for the deferred to complete in a neat way rather than looping like this?

0 投票
2 回答
4251 浏览

python-2.7 - deferToThread 与 Deferred()

我想了解以下 2 个代码片段会发生什么 -

片段#1

我的理解是所有线程并行运行,输出是 => 所有 procs 混合的标准输出

狙击手#2

对于这个片段 - 每个延迟回调一个接一个地触发,就输出而言,只有 proc1 标准输出会无限期地倾泻而出。

如果我错了,请纠正我。所以基本上我想理解和确认的是延迟对象一个接一个地被触发,而 deferToThread 是并行运行的,就像线程一样。

0 投票
1 回答
2002 浏览

python - 扭曲:在写入传输之前测试连接是否存在

在执行之前是否有可能测试连接是否仍然存在transport.write()

我修改了 simpleserv/simpleclient 示例,以便Protocol.transport每 5 秒发送(写入)一条消息。连接是持久的。

断开我的wifi时,它仍然会写入传输(当然消息不会到达另一端)但不会引发错误。再次启用 wifi 时,消息正在传递,但下一次发送消息的尝试失败(并被Protocol.connectionLost调用)。

这里又是按时间顺序发生的事情:

  1. 发送消息建立连接,消息被传递。
  2. 禁用 wifi
  3. 发送消息写入transport,不抛出错误,消息未到达
  4. 启用无线网络
  5. 3.发送的消息到达
  6. 发送消息导致Protocol.connectionLost通话

如果我可以写入传输,在执行步骤 6 之前知道会很高兴。有什么办法吗?

服务器

客户:

0 投票
1 回答
1234 浏览

python-2.7 - 多次调用threads.deferToThread

我需要同时调用两个不同的方法以节省时间并使用从这些方法获得的结果我需要调用另一个方法,所以我遇到了 twisted.internet.threads 中的 deferToThread 方法,它返回一个延迟对象,以便我可以附加回调方法。

这是我的代码

在给定的代码中,结果是一个字典。myMethod1 和 myMethod2,这是我需要异步运行的两种方法。

根据我的理解, deferToThread 将为字典中的每个项目创建一个单独的线程来执行给定的方法,因此每次循环迭代时,它都会创建两个不同的线程。没关系。但我需要在修复间隔后连续运行此代码。我尝试在修复间隔后运行它,但在执行 16 到 17 次后,一切都停止工作。这是否意味着很多线程在后台运行?如果有很多线程正在运行,那么如何停止或如何杀死这些线程?

0 投票
1 回答
549 浏览

python - Deferred.callback() 或 Deferred.errback() 可以向调用者引发异常吗?

是否存在调用.callback().errback()将向调用者引发异常而不会被延迟捕获的情况?

假设我有以下延迟和回调:

如果我打电话d.callback(None),结果d将是Exceptionfrom bad_callback()。如果我跟注d.errback(Exception()),结果d将是Exceptionbad_errback(). 但是,在任何一种情况下,都不会向调用者提出异常。

现在,我确实知道调用.callback().errback()将向调用者引发异常的几种情况,但这些情况是您违反正确使用延迟的情况。

  • 显然,如果您调用.callback().errback()使用不正确数量的参数,它将引发TypeError.

  • 调用已经调用的 deferred 将引发AlreadyCalledError

  • 跟注.callback(defer.Deferred())会引发AssertionError.

  • 调用.errback()等效于调用.errback(failure.Failure())which 将NoCurrentExceptionError在没有活动异常的情况下引发。

真的,我的问题归结为:只要尚未调用 deferred 并且结果正确,我是否可以安全地依赖调用.callback(result)或结果永远不会引发异常的行为?.errback(exception_or_failure)

0 投票
0 回答
683 浏览

python - Autobahn python twisted wamp 客户端示例为 _parseClientTCP() 提供 TypeError

我想运行此处列出的 Autobahn Python 扭曲示例https://github.com/tavendo/AutobahnPython/tree/master/examples/twisted/wamp/basic。但是,运行 client.py 总是给我 TypeError:

环境详细信息:Ubuntu 12.04.2 LTS 64 位、Python 2.7.3、Autobahn 0.8.6

安装步骤:

请帮忙!如何让示例运行?server.py 运行良好。

0 投票
1 回答
4565 浏览

python-2.7 - ReactorNotRestartable 错误

我有一个工具,我在其中实现网络中连接的设备的 upnp 发现。

为此,我编写了一个脚本并在其中使用了数据报类。

实现:每当在工具上按下扫描按钮时,它将运行该 upnp 脚本并列出在工具中创建的框中的设备。

这工作正常。

但是当我再次按下扫描按钮时,它给了我以下错误:

upnp脚本的主要功能:

有一个服务器类正在发送 M-search 命令(upnp)以发现设备。

在服务器类构造函数中,发送 m-search 后,我正在弯腰反应堆

从谷歌我发现,我们不能重启反应堆,因为这是它的限制。

请指导我如何修改我的代码,以便我能够扫描设备超过 1 次并且不会收到此“反应堆不可重启错误”

0 投票
2 回答
717 浏览

python - python: 带有交互式 python shell 的扭曲应用程序

是否有可能编写一个打开交互式外壳的扭曲驱动应用程序,例如调整通过扭曲协议层服务的业务对象?

我目前的问题是reactor.run()阻塞应用程序,并且IPython.embed()仅在反应器完成运行。