scrapy-redis(五):scrapy中信号工作的原理

本文介绍了scrapy信号的工作原理,包括使用pydispatch模块创建和发送信号,以及scrapy的SignalManager。通过示例展示了如何自定义信号,如login_failure,并在需要登录的页面解析时发送该信号来触发重新登录的操作。
摘要由CSDN通过智能技术生成

scrapy有内置的信号,比如spider_opened,spider_closed,item_dropped等等。我们可以利用这些信号来做一些初始化的工作和数据收集统计。比如spider_opened信号就方便了我们在爬虫启动的时候,创建到数据库的连接等,item_dropped的信号就方便我们去收集在爬虫工作的期间,收集被丢弃的item的数量等等。这篇文章不是告诉大家如何使用scrapy信号的,而是告诉大家scrapy信号的工作原理,以及如何自定义我们自己的信号。

一.pydispatch模块
scrapy的信号处理使用的是dispatch模块,这个模块非常小,也非常容易看懂,使用方法如下:

from pydispatch import dispatcher

hello = object()

def func():
    print('hello, world')

dispatcher.connect(func, signal=hello, sender=dispatcher.Anonymous)
dispatcher.send(signal=hello)

上面几行代码就创建了我们自己的信号hello,并将这个信号绑定到一个接收器上面即func()行数。然后我们利用send()方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值