AutobahnPython + Twisted 'Publish' 在脚本完成后泛滥消息
AutobahnPython + Twisted 'Publish' floods messages after script is finished
我有一个 Python 脚本,它有时 运行 是一个持续约 5-60 秒的过程。在此期间,对 session.publish()
的十次调用将被忽略,直到脚本完成。 一旦脚本完成,所有十条消息都会被大量发布。
我已经通过在调试模式下打开 Crossbar.io 路由器证实了这一点,它会在时间结束后显示与发布的消息相对应的日志(而不是预期的 运行 期间)。
有问题的脚本又长又复杂,包括 Crossbar/Twisted/AutobahnPython 的前端和后端组合。我觉得如果我试图浓缩并包含在这里,我可能会误报问题。
没有立即发布的原因是什么?
到目前为止有几次不成功的尝试:
- Source:扭曲的需求'non-blocking code'。因此,我尝试合并
reactor.callLater
但没有成功(我也不知道如何为 publish
事件执行此操作)。
- 我研究了 idea of using Pool 来派生工人来执行发布。
- AutobahnPython repo 似乎没有任何真正包含这种情况的示例。
谢谢!
What reasons are there for publish to not happen instantaneously?
反应堆必须有机会 运行 才能 I/O 发生。示例代码不允许反应堆 运行 因为它在用户代码中的 while
循环中执行了很长时间。
我有一个 Python 脚本,它有时 运行 是一个持续约 5-60 秒的过程。在此期间,对 session.publish()
的十次调用将被忽略,直到脚本完成。 一旦脚本完成,所有十条消息都会被大量发布。
我已经通过在调试模式下打开 Crossbar.io 路由器证实了这一点,它会在时间结束后显示与发布的消息相对应的日志(而不是预期的 运行 期间)。
有问题的脚本又长又复杂,包括 Crossbar/Twisted/AutobahnPython 的前端和后端组合。我觉得如果我试图浓缩并包含在这里,我可能会误报问题。
没有立即发布的原因是什么?
到目前为止有几次不成功的尝试:
- Source:扭曲的需求'non-blocking code'。因此,我尝试合并
reactor.callLater
但没有成功(我也不知道如何为publish
事件执行此操作)。 - 我研究了 idea of using Pool 来派生工人来执行发布。
- AutobahnPython repo 似乎没有任何真正包含这种情况的示例。
谢谢!
What reasons are there for publish to not happen instantaneously?
反应堆必须有机会 运行 才能 I/O 发生。示例代码不允许反应堆 运行 因为它在用户代码中的 while
循环中执行了很长时间。