【问题标题】:AutobahnPython + Twisted 'Publish' floods messages after script is finishedAutobahnPython + Twisted 'Publish' 在脚本完成后淹没消息
【发布时间】:2018-01-10 20:35:50
【问题描述】:

我有一个 Python 脚本,它有时会运行一个持续约 5-60 秒的进程。在此期间,对 session.publish() 的 10 次调用将被忽略,直到脚本完成。脚本完成后,所有 10 条消息都会以洪水的形式发布。

我已通过在调试模式下打开 Crossbar.io 路由器来证实这一点,它会在时间结束后显示与已发布消息相对应的日志(而不是按预期运行期间)。

有问题的脚本很长、很复杂,包括 Crossbar/Twisted/AutobahnPython 的前端和后端组合。我觉得如果我试图将其浓缩并包含在此处,我可能会误报问题。

什么原因导致无法立即发布?

到目前为止有几次不成功的尝试:

  • Source:Twisted 需要“非阻塞代码”。因此,我尝试合并reactor.callLater,但没有成功(我也不知道如何为publish 事件执行此操作)。
  • 我查看了 idea of using Pool 以派生工作人员来执行发布。
  • AutobahnPython 存储库似乎没有任何真正包含这种情况的示例。

谢谢!

【问题讨论】:

  • @Jean-PaulCalderone 虽然另一个问题可能与这个问题有类似的答案,但这些问题并不表示相同的症状。这个问题没有提到 websocket ping 超时,所以我认为将其称为重复不是正确的决定。

标签: python twisted autobahn crossbar


【解决方案1】:

有什么原因不能立即发布?

反应堆必须有机会运行才能发生 I/O。示例代码不会让反应器运行,因为它会长时间在用户代码中的while 循环中执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2023-03-17
    相关资源
    最近更新 更多