1. 程式人生 > >Scrapy筆記(9)- 部署

Scrapy筆記(9)- 部署

本篇主要介紹兩種部署爬蟲的方案。如果僅僅在開發除錯的時候在本地部署跑起來是很容易的,不過要是生產環境,爬蟲任務量大,並且持續時間長,那麼還是建議使用專業的部署方法。主要是兩種方案:

部署到Scrapyd

Scrapyd是一個開源軟體,用來執行蜘蛛爬蟲。它提供了HTTP API的伺服器,還能執行和監控Scrapy的蜘蛛

要部署爬蟲到Scrapyd,需要使用到scrapyd-client部署工具集,下面我演示下部署的步驟

Scrapyd通常以守護程序daemon形式執行,監聽spider的請求,然後為每個spider建立一個程序執行scrapy crawl myspider,同時Scrapyd還能以多程序方式啟動,通過配置max_proc

max_proc_per_cpu選項

安裝

使用pip安裝

pip install scrapyd

在ubuntu系統上面

apt-get install scrapyd

配置

配置檔案地址,優先順序從低到高

  • /etc/scrapyd/scrapyd.conf (Unix)
  • /etc/scrapyd/conf.d/* (in alphabetical order, Unix)
  • scrapyd.conf
  • ~/.scrapyd.conf (users home directory)

簡單的例子

[scrapyd]
eggs_dir    = eggs
logs_dir    = logs
items_dir   =
jobs_to_keep = 5
dbs_dir     = dbs
max_proc    = 0
max_proc_per_cpu = 4
finished_to_keep = 100
poll_interval = 5
bind_address = 0.0.0.0
http_port   = 6800
debug       = off
runner      = scrapyd.runner
application = scrapyd.app.application
launcher    = scrapyd.launcher.Launcher
webroot     = scrapyd.website.Root

[services]
schedule.json     = scrapyd.webservice.Schedule
cancel.json       = scrapyd.webservice.Cancel
addversion.json   = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json  = scrapyd.webservice.ListSpiders
delproject.json   = scrapyd.webservice.DeleteProject
delversion.json   = scrapyd.webservice.DeleteVersion
listjobs.json     = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus

部署

使用scrapyd-client最方便,Scrapyd-client是scrapyd的一個客戶端,它提供了scrapyd-deploy工具將工程部署到Scrapyd伺服器上面

通常將你的工程部署到Scrapyd需要兩個步驟:

  1. 將工程打包成python蛋,你需要安裝setuptools

你可以在你的工程配置檔案scrapy.cfg定義Scrapyd目標

[deploy:example]
url = http://scrapyd.example.com/api/scrapyd
username = scrapy
password = secret

列出所有可用目標使用命令

scrapyd-deploy -l

列出某個目標上面所有可執行的工程,執行命令

scrapyd-deploy -L example

cd到工程根目錄,然後使用如下命令來部署:

scrapyd-deploy <target> -p <project>

你還可以定義預設的target和project,省的你每次都去敲程式碼

[deploy]
url = http://scrapyd.example.com/api/scrapyd
username = scrapy
password = secret
project = yourproject

這樣你就直接取執行

scrapyd-deploy

如果你有多個target,那麼可以使用下面命令將project部署到多個target伺服器上面

scrapyd-deploy -a -p <project>

部署到Scrapy Cloud

它免除了安裝和監控伺服器的需要,並提供了非常美觀的UI來管理各個Spider,還能檢視被抓取的Item,日誌和狀態等。

你可以使用shub命令列工具來講spider部署到Scrapy Cloud。更多請參考官方文件

Scrapy Cloud和Scrapyd是相容的,你可以根據需要在兩者之前切換,配置檔案也是scrapy.cfg,跟scrapyd-deploy讀取的是一樣的。

相關推薦

Scrapy筆記9- 部署

本篇主要介紹兩種部署爬蟲的方案。如果僅僅在開發除錯的時候在本地部署跑起來是很容易的,不過要是生產環境,爬蟲任務量大,並且持續時間長,那麼還是建議使用專業的部署方法。主要是兩種方案: 部署到Scrapyd Scrapyd是一個開源軟體,用來執行蜘蛛爬蟲。它提供了HTTP API的伺服器,還能執行和監控Scra

構建之法——讀書筆記9

add 體驗 領域 color 讀書筆記 幫助 做什麽 目標 網站 本周粗略的過了一遍第12章。 第12章 用戶體驗 其實,計算機軟件的用戶界面(User Interface, UI)和用戶體驗(User eXeperience,UX)是一個有著豐富內容的學術領域,軟件工

Linux學習筆記9

9一、特殊權限set_uidset_uid 可以臨時賦予其他用戶 命令所有者的身份 例如passwd 權限 resr-xr-x。 給一個文件設置set_uid前提是文件是二進制的可執行的文件例如ls,cat 。給一個文本文件或者目錄設置是沒有意義的普通用戶ls不了/root/目錄chmod u+s +命令

Linux第二周學習筆記9

使用 red tmp 可用 命令 文件的 二周 nac style Linux第二周學習筆記(9)2.15 更改所有者和所屬組chownchown(change owner)命令:更改所有者,也可更改所屬組chown -R命令: chown命令只是對文件或者目錄生效的僅僅只

java基礎筆記9----集合之list集合

類型安全 sta clas bsp i++ 效率 contains 有序 void 集合 對於集合的理解,集合是一個容器,用於存儲和管理其它對象的對象 集合,首先了解所有集合的父接口----collection 特點:存儲任意object元素 方法 boolean add(

cesium 學習筆記92018.11.09

實體的描述資訊   2種方法 一種建立的時候加 一種後來加 var viewer = new Cesium.Viewer('cesiumContainer'); var wyoming = viewer.entities.add({ name : 'Wyoming',

MongoDB 學習筆記9--- Limit與Skip方法

MongoDB Limit() 方法 如果你需要在MongoDB中讀取指定數量的資料記錄,可以使用MongoDB的Limit方法,limit()方法接受一個數字引數,該引數指定從MongoDB中讀取的記錄條數。 語法 limit()方法基本語法如下所示: >db.C

Kotlin學習筆記9- 資料類

系列文章全部為本人的學習筆記,若有任何不妥之處,隨時歡迎拍磚指正。如果你覺得我的文章對你有用,歡迎關注我,我們一起學習進步! Kotlin學習筆記(1)- 環境配置 Kotlin學習筆記(2)- 空安全 Kotlin學習筆記(3)- 語法 Ko

吳恩達深度學習筆記9-導數的簡單推導介紹

導數(Derivatives) 這個筆記我主要是想幫你獲得對微積分和導數直觀的理解。 或許你認為自從大學畢以後你再也沒有接觸微積分。 為了高效應用神經網路和深度學習,你並不需要非常深入理解微積分(這個哦,並不需要深入瞭解)。因此如果你觀看這個視訊或者以後的視訊時心想:“哇哦,這些知

Java核心技術 卷I 基礎知識 學習筆記9

參考:Java核心技術 卷I 基礎知識 第十四章 多程序與多執行緒有哪些區別呢?本質的區別在於每個程序擁有自己的一整套變數,而執行緒則共享資料。似乎有些風險,但是共享變數使執行緒之間的通訊比程序之間的通訊更有效、更容易。在有些作業系統中,與程序相比,執行緒更輕量級,建立、撤銷一個執

Python時間序列LSTM預測系列學習筆記9-多變數

本文是對: https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/ https://blog.csdn.net/iyangdi/article/details/77881755

solidity學習筆記9—— 介面和抽象合約

一個合約如何讀取其他合約的資料或呼叫其他合約的方法? 介面的存在就是為了合約之間的通訊。 有兩種實現方式:抽象合約 和 介面 一、抽象合約 抽象函式是沒有函式體的的函式。如下: pragma solidity ^0.4.0; ​ contract Feline {

Spark學習筆記9—— Spark IP位置查詢

1 資料來源 ip.txt 1.0.1.0|1.0.3.255|16777472|16778239|亞洲|中國|福建|福州||電信|350100|China|CN|119.306239|26.07530

ROS開發筆記9——ROS 深度強化學習應用之keras版本dqn程式碼分析

在ROS開發筆記(8)中構建了ROS中DQN演算法的開發環境,在此基礎上,對演算法程式碼進行了分析,並做了簡單的修改: 修改1  : 改變了儲存模型引數在迴圈中的位置,原來是每個10整數倍數回合裡面每一步都修改(相當於修改episode_step次),改成了每個10整數倍數

TCP/IP學習筆記9-DNS域名系統

前面已經提到了訪問一臺機器要靠IP地址和MAC地址,其中,MAC地址可以通過ARP協議得到,所以這對使用者是透明的,但是IP地址就不行,無論如何使用者都需要用一個指定的IP來訪問一臺計算機,而IP地址又非常不好記,於是就出現了DNS系統。 DNS系統介紹 DN

SpringBoot2學習筆記 部署SpringBoot應用

SpringBoot預設使用jar方式執行 1.以jar檔案方式 1)使用jar方式打包 a.在pom.xml中匯入相應外掛 <build> <plugins> &l

php擴充套件開發筆記9sizeof 和 strlen 遇到空字元 '\0' 的問題

看看下面程式碼的不同表現 #include <stdio.h> #include <stdlib.h> #include <string.h> int m

大資料實時計算Spark學習筆記9—— Spar SQL(1) 讀取 json 檔案

1 Spark SQL 程式設計方式:(1)SQL;(2) DataFrame API scala> case class Customer(id:Int,name:String,age:Int) defined class Customer scala&g

Scala學習筆記9—— Scala實戰專案1- 環境搭建

1 專案需求 1.1 資料庫管理(java實現) default my-db1 my-db2 id:資料庫編號 name : 資料庫名稱 location : 資料庫存放在 HDFS/S3/OSS 等檔案系統上的目錄 /user/hive/warehouse /user/

ROS進二階學習筆記9-- 關於Overlay:重名 package 在不同catkin workspace 中,

要把ROS玩轉,必須把 catkin 玩轉。 http://wiki.ros.org/catkin/Tutorials 其中,Overlay問題是 重名 package 在不同catkin workspace 中時,如何處理他們的關係。 一個檢查的命令:echo $ROS