Tornado+scrapy(Twisted) 框架结合 0, 支持 newrelic 服务器监控 1, 异步非阻塞 2, realtime 实时响应(不经过任何数据库存储)

2018-05-16 10:17:08 +08:00
 forgetTb
有谁处理处理过 Tornado+scrapy(Twisted) 框架结合吗?目前在参考( http://www.tornadoweb.org/en/stable/twisted.html#twisted-on-tornado
主要目标:
0, 支持 newrelic 服务器监控
1, 异步非阻塞
2,realtime 实时响应(不经过任何数据库存储)
选择 Tornado 是因为支持 newrelic,这是主要原因,还有异步
Twisted 也是异步非阻塞。

以下方案我也参考过
scrapyDO, 已经被改造成阻塞(如 flask+scrapy 都是如此)
scrapyrt(modify)( https://github.com/haijunt/scrapyrt), 支持 realtime,不支持 newrelic
arachnado ( https://github.com/TeamHG-Memex/arachnado)

其他
pyspider 正在考虑研究。
2871 次点击
所在节点    Python
9 条回复
forgetTb
2018-05-16 10:42:22 +08:00
或者说能够使用 tornado.platform.twisted
具体是在 Tornado 框架下
import tornado.platform.twisted
tornado.platform.twisted.install()
from twisted.internet import reactor

调用 Scrapy 启动爬虫(EvenvLoop 事件循环的代码)
dfd = process.crawl(QuotesSpider)
# process.start() # the script will block here until the crawling is finished d.addBoth(lambda _: reactor.stop())
result = dfd.addCallback(self.result_items)
并且直接拿到爬取数据。

参考链接如下:
https://stackoverflow.com/questions/36384286/how-to-integrate-flask-scrapy
http://www.tornadoweb.org/en/stable/twisted.html#twisted-on-tornado
https://doc.scrapy.org/en/latest/topics/practices.html
crb912
2018-05-16 12:09:03 +08:00
原理是:Twisted 建立连接和请求,scrapy 分析数据,tornado 显示?
golmic
2018-05-16 12:40:55 +08:00
不知道目的是什么。我的做法是解耦,scrapy 只管并发抓取的事
chrisyunhua
2018-05-16 17:49:10 +08:00
pyspider rpc 调用挺好的
forgetTb
2018-05-18 10:20:50 +08:00
@crb912 Tornado 做 webserver (可以用 newrelic 做服务器监控), 调用 scrapy 项目的爬虫并实时响应返回。( scrapyrt 是用 Twisted 做 Webserver:不能够与 newrelic 搭配使用 XXX )
forgetTb
2018-05-18 10:24:43 +08:00
@golmic 1, 需要的是实时响应,类似 scrapyrt(realtime, nonblocking)这种。但 scrapyrt 是使用 Twisted 做 WebServer,并不能与 newrelic(:一种服务器监控软件)搭配使用。现在想使用 Tornado 做 WebServer(支持 newrelic,且异步)。
golmic
2018-05-18 14:20:51 +08:00
我没太懂啊,实时响应的意思是前端传一个 URL,爬虫马上去抓取然后返回结果给 client ?那这过程不是同步的么?
kmz
2018-05-29 15:22:01 +08:00
请问楼主有没有新进展?我也想做类似的
kmz
2018-06-20 20:05:10 +08:00
我初步完成了,,,https://www.v2ex.com/t/464495

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

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

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

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

© 2021 V2EX