首页 文章 精选 留言 我的

精选列表

搜索[微服务架构],共10000篇文章
优秀的个人博客,低调大师

《深入理解Nginx:模块开发与架构解析》一3.6 处理用户请求

3.6 处理用户请求 本节介绍如何处理一个实际的HTTP请求。回顾一下上文,在出现mytest配置项时,ngx_http_mytest方法会被调用,这时将ngx_http_core_loc_conf_t结构的handler成员指定为ngx_http_mytest_handler, 另外,HTTP框架在接收完HTTP请求的头部后,会调用handler指向的方法。下面看一下handler成员的原型ngx_http_handler_pt:typedef ngx_int_t (ngx_http_handler_pt)(ngx_http_request_t r);从上面这段代码可以看出,实际处理请求的方法ngx_http_mytest_handler将接收一个ngx_http_request_t类型的参数r,返回一个ngx_int_t(参见3

优秀的个人博客,低调大师

《深入理解Nginx:模块开发与架构解析》一3.2 准备工作

3.2 准备工作 Nginx模块需要使用C(或者C++)语言编写代码来实现,每个模块都要有自己的名字。按照Nginx约定俗成的命名规则,我们把第一个HTTP模块命名为ngx_http_mytest_module。由于第一个模块非常简单,一个C源文件就可以完成,所以这里按照官方惯例,将唯一的源代码文件命名为ngx_http_mytest_module.c。实际上,我们还需要定义一个名称,以便在编译前的configure命令执行时显示是否执行成功(即configure脚本执行时的ngx_addon_name变量)。为方便理解,仍然使用同一个模块名来表示,如ngx_http_mytest_module。为了让HTTP模块正常工作,首先需要把它编译进Nginx(3.3节会探讨编译新增模块的两种方式)。其次需要设定模块如何在运行中生效,比如在

优秀的个人博客,低调大师

《深入理解Nginx:模块开发与架构解析》一1.4 编译安装Nginx

1.4 编译安装Nginx 安装Nginx最简单的方式是,进入nginx-1.0.14目录后执行以下3行命令: ./configure make make install configure命令做了大量的“幕后”工作,包括检测操作系统内核和已经安装的软件,参数的解析,中间目录的生成以及根据各种参数生成一些C源码文件、Makefile文件等。make命令根据configure命令生成的Makefile文件编译Nginx工程,并生成目标文件、最终的二进制文件。make install命令根据configure执行时的参数将Nginx部署到指定的安装目录,包括相关目录的建立和二进制文件、配置文件的复制。

优秀的个人博客,低调大师

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返回给爬虫SPIDERS进行处理。7、爬虫SPIDERS处理响应,并通过中间件MIDDLEWARES返回处理后的items,以及新的请求给引擎。8、引擎发送处理后的items到项目管道,然后把处理结果返回给调度器SCHEDULER,调度器计划处理下一个请求抓取。9、重复该过程(继续步骤1),直到爬取完所有的url请求。 各个组件介绍 爬虫引擎(ENGINE)爬虫引擎负责控制各个组件之间的数据流,当某些操作触发事件后都是通过engine来处理。 调度器(SCHEDULER)调度接收来engine的请求并将请求放入队列中,并通过事件返回给engine。 下载器(DOWNLOADER)通过engine请求下载网络数据并将结果响应给engine。 SpiderSpider发出请求,并处理engine返回给它下载器响应数据,以items和规则内的数据请求(urls)返回给engine。 管道项目(item pipeline)负责处理engine返回spider解析后的数据,并且将数据持久化,例如将数据存入数据库或者文件。 下载中间件下载中间件是engine和下载器交互组件,以钩子(插件)的形式存在,可以代替接收请求、处理数据的下载以及将结果响应给engine。 spider中间件spider中间件是engine和spider之间的交互组件,以钩子(插件)的形式存在,可以代替处理response以及返回给engine items及新的请求集。 如何创建Scrapy项目 创建Scrapy项目 创建scrapy项目的命令是scrapy startproject 项目名,创建一个爬虫进入到项目目录scrapy genspider 爬虫名字 爬虫的域名,例子如下: zhaofandeMBP:python_project zhaofan$ scrapy startproject test1 New Scrapy project 'test1', using template directory '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/scrapy/templates/project', created in: /Users/zhaofan/Documents/python_project/test1 You can start your first spider with: cd test1 scrapy genspider example example.com zhaofandeMBP:python_project zhaofan$ zhaofandeMBP:test1 zhaofan$ scrapy genspider shSpider hshfy.sh.cn Created spider 'shSpider' using template 'basic' in module: test1.spiders.shSpider scrapy项目结构 items.py 负责数据模型的建立,类似于实体类。middlewares.py 自己定义的中间件。pipelines.py 负责对spider返回数据的处理。settings.py 负责对整个爬虫的配置。spiders目录 负责存放继承自scrapy的爬虫类。scrapy.cfg scrapy基础配置 所有的努力都值得期许,每一份梦想都应该灌溉!

资源下载

更多资源
Mario

Mario

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册