关于 scrapy 中 signals 的用法请教

2017-09-27 21:38:54 +08:00
 saximi

看了 scrapy 的官方文档,关于 signals 的函数在 from_crawler()中有如下示例代码:

crawler.signals.connect(ext.spider_opened, signal=signals.spider_opened) #代码 1 
crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed) #代码 2  

对应两个方法定义如下: 
def spider_opened(self, spider): 
    spider.log("opened spider %s" % spider.name) 
def spider_closed(self, spider): 
    spider.log("closed spider %s" % spider.name) 

恳请大家指点,上面代码中和 signals 的这几个函数和方法到底是完成了什么工作呢? 谢谢!

2550 次点击
所在节点    Python
3 条回复
sunwei0325
2017-09-27 21:51:29 +08:00
主要是写 extension 用的, 配合几个 signal 当触发器用的, 具体可以看看内置的 extension 代码
cszhiyue
2017-09-28 14:57:59 +08:00
这里首先注册两个函数 spider_opened, spider_closed。当 spider 启动和关闭的时候会触发。有点类似 wrapper 的概念
比如爬虫结束可以执行一些清理的工作比如发邮件。
saximi
2017-09-28 20:25:44 +08:00
@cszhiyue
@sunwei0325 非常感谢!!!

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

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

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

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

© 2021 V2EX