请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

问题发过来了,老师看一下把

1、我提供一个api接受url,在推入队列,scrapy-redis监听队列,抓取数据后直接返回给api,不入库。这样搞貌似实现不了返回给接口。

2、还有一个问题,scrapy-redis是不会停止了,如果数据跑晚了怎么通知后端我已经完成了

老师给个思路把!

正在回答

1回答

  1. 是的,这是两个进程,所以这个之间要实现通信需要有一个消息通信机制。这个消息通信机制比较多,比如使用redis,使用rabbitmq都可以。以及kafka也行,这里最简单的是redis和rabbitmq了,你的api服务直接发送给scrapy-redis之后就一直等着redis或者rabbitmq中是否有数据,scrapy-redis抓取完成以后直接将数据放到redis中,这样就行了

  2. scrapy-redis启动后就不会停止了,如果数据跑完了你也可以采用上面的思路,跑完以后将redis中的一个变量设置为true就行了,这样你的后端服务只管监听这个变量值就行了

0 回复 有任何疑惑可以回复我~
  • 提问者 鲁智深110 #1
    第二个问题,我好像无法判断数据是否已经跑完没有,scrapy-redis接受1000条数据,能知道的是每条数据返回到redis的时间,但好像无法得到什么时候跑完,这个好像无法判断,只能判断每条数据。
    回复 有任何疑惑可以回复我~ 2019-12-17 11:27:17
  • bobby 回复 提问者 鲁智深110 #2
    什么时候跑完 可以设置一个redis中的队列如果1分钟内都没有url再来了 就可以证明数据已经抓取完了
    回复 有任何疑惑可以回复我~ 2019-12-18 11:48:20
  • 提问者 鲁智深110 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-12-18 12:58:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信