最近在调研各种渲染服务的使用,正在使用的是google的puppeteer,但是在线上出现个问题,在多线程并发情况下速度有些问题,所以调研一下splash的服务。出乎意料的是splash服务的并发性很出色,基于异步的twisted框架,成为使用瓶颈的就是服务的稳定性了,这是后话。除了渲染服务的失败率和服务本身的不稳定问题,其他方面都可以说比较优秀,可以尝试使用一下。下面写一下关于splash部署并使用的问题。
splash是一个web服务,可以通过docker部署

sudo docker pull scrapinghub/splash
docker run -it -p 8050:8050 scrapinghub/splash

服务启动之后可以直接用浏览器访问8050端口并测试使用。
splash服务基于webkit内核,支持lua脚本,服务从8050端口启动之后,向服务所在服务器8050端口发送请求即可。这里我用的是python脚本构造了请求的url,url中添加了lua的代码段,提供请求的参数。

from urllib.parse import quotelua = '''
function main(splash, args)          splash:on_request(function(request)request:set_proxy{host = "xxx.xxx.xxx.xxx",port = xxxx,}end)splash:set_user_agent("Mozilla/5.0")splash:go("http://xxxxxxx.com/")return splash:html()end
'''
url = 'http://localhost:8050/execute?lua_source=' + quote(lua)

上述lua代码段中设置了代理和端口,lua脚本中除了设置代理外也可以设置请求头参数,具体配置参数可以参考官方文档
splash官方文档
(查官方文档是最好的选择,遇到问题在百度之前最好看一下官方文档)

from concurrent.futures import ThreadPoolExecutor
from queue import Queue
q = Queue()
for i in range(10000):q.put(url)
def task(n):while True:st = time.time()if q.empty():breakelse:url = q.get()if q.qsize() % 100 == 0:requests.post("http://localhost:8050/_gc")try:response = requests.get(url)if len(response.text)<5000:print("重新请求")time.sleep(1)response = requests.get(url)print("%d号线程,time: %.2f  页面大小%d 剩余 %d" % (n, time.time() - st, len(response.text),q.qsize()))except Exception as e:time.sleep(3)response = requests.get(url)print("%d号线程,time: %.2f  页面大小%d 剩余 %d" % (n, time.time() - st, len(response.text),q.qsize()))
if __name__ == "__main__":p = ThreadPoolExecutor()l = []start = time.time()n = 20size = q.qsize()for i in range(n):obj = p.submit(task, i)l.append(obj)p.shutdown()print("webitem rate : %.1f item/s" % (size / (time.time() - start)))print(time.time() - start)

随后我开启了20个线程测试了一下splash的性能,qps大概在3左右,而puppeteer在同样条件下在1.8左右(由于挂了代理,速度会有点慢)。可以看出splash性能还是可以,但是有两个问题:1.线程开到100个以上是,服务处理请求反应变慢,然后可能会出现服务挂掉情况,而puppeteer相比就十分稳定;当出现请求密集的情况,比如刚开始启动所有线程,会出现渲染失败的情况,返回没有内容的html。这两个问题也是可以解决的,同过重启和重新请求,不过如果能通过版本更新解决这些问题是最好的

Splash渲染服务使用相关推荐

  1. Splash 渲染引擎简介

    Splash文档地址:http://splash.readthedocs.io/en/latest/api.html Splash渲染引擎有以下功能 1.为用户返回经过渲染的HTML页面或页面截图 2 ...

  2. Scrapy 爬虫框架四 —— 动态网页及其 Splash 渲染

    一.前言 动态页面:HTML文档中的部分是由客户端运行JS脚本生成的,即服务器生成部分HTML文档内容,其余的再由客户端生成 静态页面:整个HTML文档是在服务器端生成的,即服务器生成好了,再发送给我 ...

  3. 客户端渲染 服务端渲染_这就是赢得客户端渲染的原因

    客户端渲染 服务端渲染 A decade ago, nearly everyone was rendering their web applications on the server using t ...

  4. TOP级CG行业云渲染服务的演进之路

    影视动画.特效制作等行业渲染需求量增多,4K/6K以及各高分辨率会陆续成为主流,本地算力与存储资源已无法满足现有任务量.而随着大环境的演变,CG行业发展已进入发展快车道.本次大会我们邀请到了赞奇科技C ...

  5. 云渲染服务的行业有哪些?

    云渲染始终呈现着巨大的可能性,但直到最近才开始实现其真正的潜力.最初用于可视化简单的对象,如著名的犹他州茶壶,云渲染很快发现它的目的在美国国防,美国宇航局,和其他机构和行业. 云渲染的应用正在扩大,越 ...

  6. CG行业云渲染服务的演进之路

    摘要:影视动画.特效制作等行业渲染需求量增多,4K/6K以及各高分辨率会陆续成为主流,本地算力与存储资源已无法满足现有任务量.而随着大环境的演变,CG行业发展已进入发展快车道.来自赞奇科技的CEO金伟 ...

  7. 前端渲染服务端渲染总结

    今天被问到什么是前端和服务端渲染,回答的很不好,下面总结一下: 什么是服务器端渲染和客户端渲染? 互联网早期,用户使用浏览器浏览的都是一些没有复杂逻辑的.简单的页面,这些页面都是在后端将html拼接好 ...

  8. Splash渲染报错,渲染后一片空白

    Splash使用dockers安装后使用 docker run -p 8050:8050 scrapinghub/splash 进行安装运行Splash打开网址 localhost:80550 st: ...

  9. 最快的 Houdini 和 V-Ray 云渲染服务

    Houdini是SideFX开发的一款3D动画软件应用.Houdini 最常用于 FX 部门,用于在电影和游戏中创建视觉效果.它被主要的 VFX 公司使用,例如 Walt Disney Animati ...

最新文章

  1. 如何在戴尔M系列交换机上配置简单交换模式
  2. layering-cache
  3. 异步编程Promise、Generator和Async
  4. K8S Learning(10)——Pod配置
  5. Oracle 查询历史数据(转帖)
  6. jquery梳理之常用选择器
  7. 每个创始人都需要了解的来自 Y Combinator 的 13 个见解
  8. OpenCV-Laplacian边缘检测
  9. webpack配置babel-loader
  10. 博文视点大咖直播伴你读No.4:用户增长、产品思维和产品的变化
  11. [导入]哪种图像格式最好?
  12. 华硕电脑安装键盘灯驱动步骤
  13. oracle 校验 统一社会信用代码 函数
  14. 优质ppt模板分享,拿走不谢
  15. RT5350使用uboot从U盘启动linux成功
  16. 【GD32】从0开始学GD32单片机(9)—— SPI外设详解+主机从机发送和接收例程
  17. TEAMCENTER更换许可证
  18. 肠道菌群代谢组学之粪便微生物移植治疗原发性硬化性胆管炎
  19. java转型产品经理好转吗,转型成为中后台产品经理,其实不那么难
  20. asp.net超市管理系统(源码+数据库)

热门文章

  1. windows 禁用ipv6服务_Windows Server 2008 R2服务器禁用IPv6设置方法
  2. cocos2d-x 之美术字bmfont工具使用
  3. 汽车管理程序(数据结构课程练习)
  4. 关于listen()的的第二个参数backlog
  5. LBP算法(人脸识别特征提取)
  6. 使用CRM系统通过四点快速收集客户信息
  7. 计算机组成原理 程序计数器实验
  8. g2o_viewer安装及一些坑
  9. 肥胖类型及减肥方法 中医减肥的方法
  10. pr视频剪辑必备的6个音效、配乐素材网站。