首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/128000

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理

这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的在python3上运行Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。对于会阻塞线程的操作包含访问文件、数据库或者Web、产生新的进程并需要处理新进程的输出(如运行shell命令)、执行系统层次操作的代码(如等待系统队列),Twisted提供了允许执行上面的操作但不会阻塞代码执行的方法。 Scrapy data flow(流程图) Scrapy数据流是由执行的核心引擎(engine)控制,流程是这样的:1、爬虫引擎ENGINE获得初始请求开始抓取。2、爬虫引擎ENGINE开始请求调度程序SCHEDULER,并准备对下一次的请求进行抓取。3、爬虫调度器返回下一个请求给爬虫引擎。4、引擎请求发送到下载器DOWNLOADER,通过下载中间件下载网络数据。5、一旦下载器完成页面下载,将下载结果返回给爬虫引擎ENGINE。6、爬虫引擎ENGINE将下载器DOWNLOADER的响应通过中间件MIDDLEWARES返回给爬虫SPIDER...

任务扫描的架构设计

任务扫描的架构设计 一、闲言 做业务系统的时候,遇到过太多次从db中扫描任务处理的需求,数据量,从每天几百上千条到上百万条不等,所以这次聊聊在不同场景中,应该如何设计次系统才能尽可能的降低开发工作量,提升系统稳定性、实时性,同时能够在中长期支持起业务的发展。 二、场景 做业务系统开发的时候经常会遇到以下场景: l 运营同学需要给某一批用户发送一些优惠券、提醒。 l 升级系统后需要对历史用户的数据进行订正。 l 任务处理失败了,希望后续能重试此任务。 l 任务不是立即执行,而是需要在未来的某个时刻执行。 l 任务是耗时任务,实时执行失败可能性比较大,而且会影响其他业务的进行,所以线持久化下来,后续慢慢执行。 l …… 具体到代码层面,就是DB中有一批需要处理的任务,系统需要取出这些任务,然后处理掉。 三、要点 这个问题看似很简单,但是在做架构设计的时候有以下几种情况需要仔细考虑: l 有些任务实时性要求很高,如何保证实时性,让任务尽可能在预期的时间点上执行。 l 如何保证公平性;每个任务都应该拥有尽可能公平的执行机会,不能因为部分任务占用系统资源,而导致其他任务阻塞,没有执行机会。 l ...

相关文章

发表评论

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册