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需要兩個步驟:
- 將工程打包成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 學習筆記(9)2018.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擴充套件開發筆記(9)sizeof 和 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