https://twistedmatrix.com/documents/current/core/howto/defer.html…
0. 楔子(一个最简单的案例) 1.scrapy.Spider scrapy.spiders.Spider name allowed_domains start_urls custom_settings :在爬虫运行时用这个属性里的设置覆盖默认设置,它本身是字典格式的. Crawler 该属性在初始化类之后由from_crawler()类方法设置,并链接到此蜘蛛实例绑定到的Crawler对象. 爬虫程序在项目中封装了大量的组件,用于单一入口访问(例如扩展,中间件,信号管理器等). 请参阅Craw…
Twisted是用Python实现的基于事件驱动的网络引擎框架,是python中一个强大的异步IO库.理解twisted的一个前提是弄清楚twisted中几个核心的概念: reactor, Protocl, ProtocolFactory, Deffered  1 reactor twisted.internet.reactor https://twistedmatrix.com/documents/current/core/howto/reactor-basics.html reactor是t…
Deferred可以添加多个回调函数,每个回调函数的结果作为下一个回调函数的参数 代码实例(可在pycharm中运行,摘自 https://twistedmatrix.com/documents/current/core/howto/defer.html) from twisted.internet import reactor, defer class Getter: def gotResults(self, x): """ The Deferred mechanism p…
笔记-twisted 1.      简介 Twisted is an event-driven networking engine written in Python and licensed under the open source ​MIT license. Twisted runs on Python 2 and an ever growing subset also works with Python 3. 1.1.    什么是异步 最初始的程序是阻塞型的,就是一句一句执行,如果没…
下载1000次网页资源 1,普通循环方式下载1000次,非常慢 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import os import time import urllib import urllib2 total_times = 1000 def worker(url): try: f = urllib2.urlopen(url,timeout=10800) body = f.read() except: print sys.…
0. 1.参考 Python 爬虫:把廖雪峰教程转换成 PDF 电子书 https://github.com/lzjun567/crawler_html2pdf wkhtmltopdf 就是一个非常好的工具,它可以用适用于多平台的 html 到 pdf 的转换,pdfkit 是 wkhtmltopdf 的Python封装包. https://www.crummy.com/software/BeautifulSoup/bs4/doc/# 也可以通过 BeautifulSoup 插入删除tag so…
firefly使用了twisted的pb 来实现rpc: http://twistedmatrix.com/documents/current/core/howto/pb-usage.html 服务端 #!/usr/bin/env python # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. from twisted.spread import pb from twisted.internet imp…
(模块的介绍方法都是先说大体功能,在捡一些细节详细讨论.) master 类很简单,就3个函数,一个init,设置配置信息,并调用masterapp,然后还有一个循环启动子进程的start函数. 这里只有masterapp函数值得我们关注. 代码如下: 36     defmasterapp(self):  37         config = json.load(open(self.configpath,'r'))  38         mastercnf = config.get('ma…
实际上这章压根不需要我来说,twisted官网的Doc里面有专门介绍的章节.写的非常详细. http://twistedmatrix.com/documents/current/core/howto/index.html 我只能肤浅的说说firefly里面对PB的运用. 首先firefly使用PB的目的是实现各个模块之间的通信,做到“分布式”,逻辑分离. 比如master模块专门负责控制,gate做分发,game1做游戏逻辑,net做网络相关.如果不用twisted.pb的话,我们就要自己写复杂…
twisted task.cpperator 1.      twisted task.cpperator 1.1.    简介-cooperator 官方文档: https://twistedmatrix.com/documents/current/api/twisted.internet.task.Cooperator.html#coiterate Cooperative task scheduler. A cooperative task is an iterator where each…
0.参考 https://doc.scrapy.org/en/latest/topics/item-pipeline.html?highlight=mongo#write-items-to-mongodb 20180721新增:异步版本 https://twistedmatrix.com/documents/15.3.0/core/howto/rdbms.html https://twistedmatrix.com/documents/18.7.0/api/twisted.python.fail…
官网中关于ReactorNotRestartable的错误描述(摘自:https://twistedmatrix.com/documents/16.1.0/api/twisted.internet.error.html),我们将从scrapy源码分析这个问题 重点要了解scrapy源码下的crawler.py模块的三个类,这三个类是Scrapy的启动核心代码, 由于Scrapy是基于Twisted(一个python网络编程框架)的事件循环写的异步爬虫框架, 所以需要对Twisted模块有一定了解…
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用[打开][读写][关闭]模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.关闭) socket和file的区别: file模块是针对某个指定…
Python之路[第六篇]:socket   Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是"一切皆文件",对于文件用[打开][读写][关闭]模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.…
Python之路[第六篇]:socket   Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是"一切皆文件",对于文件用[打开][读写][关闭]模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.…
一.TCP/IP相关知识 TCP/UDP提供进程地址,两个协议互不干扰的独自的协议       TCP :Transmission Control Protocol 传输控制协议,面向连接的协议,通信前需要建立通信信道(虚拟链路),结束后拆除链路,流式数据协议,可靠的连接                       UDP:User Datagram Protocol 用户数据报协议,无连接的协议,不可靠的连接   IP是主机到主机之间,在传输过程中是不会变的,不能超过MTU:最大传输单元 MA…
网络基础之网络协议篇:http://www.cnblogs.com/linhaifeng/articles/5937962.html 参考博客:http://www.cnblogs.com/linhaifeng/articles/6129246.html Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一…
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用[打开][读写][关闭]模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.关闭) socket和file的区别: file模块是针对某个指定…
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o="script",s=u.createElement(o),i,f;for(s.src…
ASP.NET Core 1.0 部署 HTTPS ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1) 提示 更新时间:2016年01月23日. 在目前介绍 ASP.NET Core 1.0 的中英文文章中,我没有找到关于部署HTTPS的, 究其原因,除了暂时无法跨平台外,就算是很少人有这个需求,但我还是决定写一下. 警告 目前( 1.0.0-rc1-update1 )仅支持完整版的dnx451,dnxcore5需要rc2的支持.目前只能运行在Win…
1.安装.NET Core SDK 在windows下开发.NET Core最好使用Visual Studio工具.下载地址与安装: VS2015最新版本:Visual Studio 2015 Update 3* VS环境下的.Net Core:.NET Core 1.0 for Visual Studio 对应下载的文件DotNetCore.1.0.0-VS2015Tools.Preview2.exe .Net Core安装过程(安装过程比较慢,亲们耐心等待): (安装慢,等待中--.)(OK…
前言 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项目,然后通过源码管理签出到另一个平台上继续开发.还有就是一次编译到处运行是如何体现的?这样类型的文章好像还没有在哪里看到过,于是我就想自己来一遍,并把这个过程分享出来给大家. 首先来个官方的介绍: .NET Core - .NET 使用 .NET Core 跨平台运行 Announcing .NET…
官网已经有一个.net core的入手教程(https://www.microsoft.com/net/core#windowscmd),但这个教程完全没有顾及全宇宙第一IDE的感受.今天就跟大家体验一下在VS2017上开发.net core程序吧.VS2017开发环境的搭建请参考:http://www.cnblogs.com/vveiliang/p/7380260.html. 打开VS2017的新建项目面板,可以看到有两个新的分类:.Net Core和.Net Standard. .Net C…
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装CentOS7 安装.NET Core SDK for CentOS7 搭建ftp服务器 安装mysql 部署ASP.NET Core应用程序 配置Nginx 配置守护服务(Supervisor) 环境说明 服务器系统:CentOS 7.3 64位 相关工具:putty.Xftp 服务器软件软件:.n…
mongodb使用BSON格式存储数据记录. 如下图: 文档结构 文档有键值对组成, 有以下结构: {    field1: value1,    field2: value2,    ...    fieldN: valueN}​ 字段的值可以是任意BSON 数据类型,包括其他文档, 数组和文档数组. 例如,以下文档包含不同类型的值: {     _id: ObjectId("5099803df3f4948bd2f98391"),    name: { first: "Al…
准备工作: 建立.NET Core Web Api项目 新建一个用于Api请求的UserInfo类 public class UserInfo { public string name { get; set; } public int age { get; set; } public bool sex { get; set; } } 2.建立.NET Core Web项目   一.使用jQuery Ajax访问 (一).表单    [FromForm] 数据类型:Object ContenyTy…
Production-Grade Container Orchestration - Automated container deployment, scaling, and management. 生产级别的容器编排系统--自动化的容器部署.扩展和管理. 1. 引言 由于最近在学习微服务,所以就基于之前docker的基础上把玩一下k8s(Kubernetes),以了解基本概念和核心功能. 2. What's k8s? k8s涉及到很多基本概念,可以看十分钟带你理解Kubernetes核心概念快…
在 Web 开发中,img 标签用来呈现图片,而且一般来说,浏览器是会对这些图片进行缓存的. 比如访问百度,我们可以发现,图片.脚本这种都是从缓存(内存缓存/磁盘缓存)中加载的,而不是再去访问一次百度的服务器,这样一方面改善了响应速度,另一方面也减轻了服务端的压力. 但是,对于 WPF 和 UWP 开发来说,原生的 Image 控件是只有内存缓存的,并没有磁盘缓存的,所以一旦程序退出了,下次再重新启动程序的话,那还是得从服务器上面取图片的.因此,打造一个具备缓存(尤其是磁盘缓存)的 Image…
Linux就该这么学 2018-05-11 实验环境:CentOS Linux release 7.3.1611 (Core) 内核版本:Linux version 3.10.0-514.el7.x86_64 Nginx版本: Nginx-1.13.0 Let’s Encrypt是一个免费的.自动化.开放的证书颁发机构.由Mozilla.Cisco.Chrome.facebook.Akamai等众多公司和机构发起的,其安全稳定及其可靠.具体信息可以去letsencrypt官方网站了解详情. 今天…