【发布时间】:2016-03-01 19:25:36
【问题描述】:
我正在尝试构建一个 API,该 API 将在通过 websocket 消息请求时运行 Scrapy 网络蜘蛛。
我想将日志输出转发到 websocket 客户端,这样您就可以看到 - 有时运行很长时间 - 进程中发生了什么。完成后,我也会发送抓取的结果。
因为可以在进程内运行 Scrapy,所以我想这样做。我在这里找到了一个将外部进程流式传输到 websocket 的解决方案,但如果可以在服务器内部运行 Scrapy,这似乎不正确。
https://tomforb.es/displaying-a-processes-output-on-a-web-page-with-websockets-and-python
我可以想象有两种方法可以在 Twisted 中完成这项工作:以某种方式使用 LogObserver,或者定义一个 LogHandler(可能是带有 StringIO 的 StreamHandler),然后在 Twisted 中使用 autobahn.websocket 类(如 WebSocketServerProtocol)以某种方式处理 Stream。
现在我很困惑,不知道如何连接两端。
有人可以提供一个简短的示例,如何将来自扭曲日志的日志输出(如果可能,避免使用文件)流式传输到 websocket 客户端吗?
【问题讨论】:
标签: python websocket scrapy twisted