亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python搭建代理IP池實現(xiàn)接口設(shè)置與整體調(diào)度

 更新時間:2019年10月27日 15:33:07   作者:Steven·簡談  
這篇文章主要介紹了Python搭建代理IP池實現(xiàn)接口設(shè)置與整體調(diào)度,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

接口模塊需要用 API 來提供對外服務的接口,當然也可以直接連數(shù)據(jù)庫來取,但是這樣就需要知道數(shù)據(jù)庫的連接信息,不太安全,而且需要配置連接,所以一個比較安全和方便的方式就是提供一個 Web API 接口,通過訪問接口即可拿到可用代理

代碼地址:https://github.com/Stevengz/Proxy_pool

另外三篇:
Python搭建代理IP池(一)- 獲取 IP
Python搭建代理IP池(二)- 存儲 IP
Python搭建代理IP池(三)- 檢測 IP

添加設(shè)置

添加模塊開關(guān)變量

setting.py

# 數(shù)據(jù)庫地址
HOST = '127.0.0.1'
# MySql端口
MYSQL_PORT = 3306
# MySQl用戶名、密碼
MYSQL_USERNAME = '***'
MYSQL_PASSWORD = '***'
# 數(shù)據(jù)庫名
SQL_NAME = 'test'

# 代理等級
MAX_SCORE = 30
MIN_SCORE = 0
INITIAL_SCORE = 10

VALID_STATUS_CODES = [200, 302]

# 代理池數(shù)量界限
POOL_UPPER_THRESHOLD = 1000

# 檢查周期
TESTER_CYCLE = 20
# 獲取周期
GETTER_CYCLE = 300

# 測試API,建議抓哪個網(wǎng)站測哪個
TEST_URL = 'http://www.baidu.com'

# API配置
API_HOST = '0.0.0.0'
API_PORT = 5555

# 開關(guān)
TESTER_ENABLED = True
GETTER_ENABLED = True
API_ENABLED = True

# 最大批測試量
BATCH_TEST_SIZE = 10

TESTER_ENABLED、GETTER_ENABLED、API_ENABLED 都是布爾類型,True 或者 False。標明了測試模塊、獲取模塊、接口模塊的開關(guān),如果為 True,則代表模塊開啟

定義接口

使用框架:Flask

api.py

from flask import Flask, g
from db import MySqlClient

__all__ = ['app']

app = Flask(__name__)

def get_conn():
 if not hasattr(g, 'mysql'):
  g.mysql = MySqlClient()
 return g.mysql

@app.route('/')
def index():
 return '<h2>Welcome to Proxy Pool System</h2>'

# 隨機代理
@app.route('/random')
def get_proxy():
 conn = get_conn()
 return conn.random()

# 代理池總量
@app.route('/count')
def get_counts():
 conn = get_conn()
 return str(conn.count())

if __name__ == '__main__':
 app.run()

聲明了一個 Flask 對象,定義了三個接口,分別是首頁、隨機代理頁、獲取數(shù)量頁。

只需要訪問對應的接口即可獲取到可用代理:

調(diào)度模塊

調(diào)用定義的獲取、存儲、檢測三個模塊,將這三個模塊通過多進程的形式運行起來

scheduler.py

import time
from multiprocessing import Process
from api import app
from getter import Getter
from tester import Tester
from db import MySqlClient
from setting import *


class Scheduler():

 # 定時測試代理
 def schedule_tester(self, cycle=TESTER_CYCLE):
  tester = Tester()
  while True:
   print('測試器開始運行')
   tester.run()
   time.sleep(cycle)
 
 # 定時獲取代理
 def schedule_getter(self, cycle=GETTER_CYCLE):
  getter = Getter()
  while True:
   print('開始抓取代理')
   getter.run()
   time.sleep(cycle)
 
 # 開啟API
 def schedule_api(self):
  app.run(API_HOST, API_PORT)
 
 def run(self):
  print('代理池開始運行')
  
  if TESTER_ENABLED:
   tester_process = Process(target=self.schedule_tester)
   tester_process.start()
  
  if GETTER_ENABLED:
   getter_process = Process(target=self.schedule_getter)
   getter_process.start()
  
  if API_ENABLED:
   api_process = Process(target=self.schedule_api)
   api_process.start()

if __name__ == "__main__":
 scheduler = Scheduler()
 scheduler.run()

啟動入口是 run() 方法,分別判斷了三個模塊的開關(guān),如果開啟的話,就新建一個 Process 進程,設(shè)置好啟動目標,然后調(diào)用 start() 方法運行,這樣三個進程就可以并行執(zhí)行,互不干擾

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python入門學習之Python流處理過程

    Python入門學習之Python流處理過程

    本篇文章屬于Python入門篇,本文主要教大家學習Python流處理過程,通過Faust流處理庫來為大家詳細講解,有需要的朋友可以借鑒參考下
    2021-09-09
  • Python+Turtle繪制幸運草的示例代碼

    Python+Turtle繪制幸運草的示例代碼

    幸運草又名四葉草,一般指四葉的苜蓿、或車軸草。在十萬株苜蓿草中,你可能只會發(fā)現(xiàn)一株是四葉草,機會率大約是十萬分之一。本文主要介紹運用turtle庫控制函數(shù)繪制四葉草,希望見者皆好運
    2022-06-06
  • Python并發(fā)編程多進程,多線程及GIL全局解釋器鎖

    Python并發(fā)編程多進程,多線程及GIL全局解釋器鎖

    這篇文章主要介紹了Python并發(fā)編程多進程,多線程及GIL全局解釋器鎖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • python實現(xiàn)對數(shù)組按指定列排序

    python實現(xiàn)對數(shù)組按指定列排序

    這篇文章主要介紹了python實現(xiàn)對數(shù)組按指定列排序方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python try...finally...的實現(xiàn)方法

    python try...finally...的實現(xiàn)方法

    這篇文章主要介紹了python try...finally...的實現(xiàn)方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • django 解決自定義序列化返回處理數(shù)據(jù)為null的問題

    django 解決自定義序列化返回處理數(shù)據(jù)為null的問題

    這篇文章主要介紹了django 解決自定義序列化返回處理數(shù)據(jù)為null的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 利用python生成一個導出數(shù)據(jù)庫的bat腳本文件的方法

    利用python生成一個導出數(shù)據(jù)庫的bat腳本文件的方法

    下面小編就為大家?guī)硪黄胮ython生成一個導出數(shù)據(jù)庫的bat腳本文件的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 使用Python實現(xiàn)繪制發(fā)散條形圖

    使用Python實現(xiàn)繪制發(fā)散條形圖

    發(fā)散條形圖用于簡化多個組的比較,它許我們比較各組中的數(shù)值,還幫助我們快速地想象出有利的和不利的或積極的和消極的反應,下面我們就來看看如何使用Python繪制發(fā)散條形圖吧
    2024-04-04
  • python持久化存儲文件操作方法

    python持久化存儲文件操作方法

    本文給大家分享python持久化存儲文件操作方法,給大家講解存儲文件的重要性,指針的基本概念及關(guān)閉文件的方法,介紹文件的創(chuàng)建和刪除技巧,感興趣的朋友一起看看吧
    2021-06-06
  • Python 時間操作例子和時間格式化參數(shù)小結(jié)

    Python 時間操作例子和時間格式化參數(shù)小結(jié)

    這篇文章主要介紹了Python 時間操作例子,例如取前幾天、后幾天、前一月、后一月等,需要的朋友可以參考下
    2014-04-04

最新評論