scrapy 部署之后是怎么和后台管理传递信息的?

2021-11-09 11:09:56 +08:00
 featureoverload

(多个) scrapy 的脚本通过 scrapyd 部署之后,如果也使用了后台管理如 scrapydweb ,

那具体的 scrapy 和 scrapydweb 是怎么传递信息的

比如传递 scrapy 抓取了 N 个 items ,parse 了 M 个 pages

scrapy 向 scrapydweb 发送消息?还是 scrapydweb 向发送 scrapy 请求?

这样的传递消息是怎么实现的。

2402 次点击
所在节点    Python
6 条回复
Kobayashi
2021-11-09 15:06:18 +08:00
我记得就是解析 scrapy 爬虫输出。好像作者依赖一个叫做 logparser 的库,也是自己写的。没研究过如何实现的。
featureoverload
2021-11-09 15:50:08 +08:00
@Kobayashi 嗯,是有一个 logparser 库的东西。

不过还想了解除了 log 含有的信息之外,还有没有其它消息传递。
Kobayashi
2021-11-09 15:59:39 +08:00
可能没有,从名字看就是解析输出做统计。

ScrapydWeb 管理已经是这方面做的最好的。
崔庆才自己书里推荐的 Gerapy 完全就是狗屎,运行连个错误输出都没有,运行不起来你都无法调试。而且项目就是半成品,还没有实现完全 scrapyd 所有 API ,星都是靠书的流量拉的小白点的,绝对没有人生产中用。
Crawlab 没有采用 scrapyd 运行爬虫,基本就是直接管理命令行进程。因为没有采用 Scrapy 官方推荐的 scrapyd ,没有尝试过,不确定有没有这方面功能,有兴趣你可以看看它怎么做的。估计即便作了也是输出解析。

我记得 Scrapy 只会运行过程中利用 telnet 与运行的进程做交互,理论上可以直接获取进程中的一部分信息。但没听说过有人这么做。
lshu
2021-11-09 16:19:29 +08:00
继承或者自定义类似“scrapy.extensions.logstats.LogStats”的扩展,定时将其属性中的“stats”序列化,然后通过 api 等操作保存到数据库提供其他服务查询
lithium4010
2021-11-09 16:23:00 +08:00
可以直接写数据库?
996635
2021-11-09 16:23:20 +08:00
twisted 监听了信号量做处理, 同时内部 extension 还实现了一个 tcp server 可以通过通信, 抓了多少 是内部维护了个计数器, 默认是内存计数
具体看 https://github.com/scrapy/scrapy/tree/master/scrapy/extensions

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/814102

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX