最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

添加設(shè)置

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

setting.py

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

# 代理等級(jí)
MAX_SCORE = 30
MIN_SCORE = 0
INITIAL_SCORE = 10

VALID_STATUS_CODES = [200, 302]

# 代理池?cái)?shù)量界限
POOL_UPPER_THRESHOLD = 1000

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

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

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

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

# 最大批測(cè)試量
BATCH_TEST_SIZE = 10

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

定義接口

使用框架: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>'

# 隨機(jī)代理
@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()

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

只需要訪問(wèn)對(duì)應(yīng)的接口即可獲取到可用代理:

調(diào)度模塊

調(diào)用定義的獲取、存儲(chǔ)、檢測(cè)三個(gè)模塊,將這三個(gè)模塊通過(guò)多進(jìn)程的形式運(yùn)行起來(lái)

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():

 # 定時(shí)測(cè)試代理
 def schedule_tester(self, cycle=TESTER_CYCLE):
  tester = Tester()
  while True:
   print('測(cè)試器開(kāi)始運(yùn)行')
   tester.run()
   time.sleep(cycle)
 
 # 定時(shí)獲取代理
 def schedule_getter(self, cycle=GETTER_CYCLE):
  getter = Getter()
  while True:
   print('開(kāi)始抓取代理')
   getter.run()
   time.sleep(cycle)
 
 # 開(kāi)啟API
 def schedule_api(self):
  app.run(API_HOST, API_PORT)
 
 def run(self):
  print('代理池開(kāi)始運(yùn)行')
  
  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()

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python正則表達(dá)式經(jīng)典入門教程

    Python正則表達(dá)式經(jīng)典入門教程

    這篇文章主要介紹了Python正則表達(dá)式,結(jié)合具體實(shí)例形式歸納總結(jié)了Python正則表達(dá)式中常用的各種函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下
    2017-05-05
  • 簡(jiǎn)單了解Python matplotlib線的屬性

    簡(jiǎn)單了解Python matplotlib線的屬性

    這篇文章主要介紹了簡(jiǎn)單了解Python matplotlib線的屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Python下載指定頁(yè)面上圖片的方法

    Python下載指定頁(yè)面上圖片的方法

    這篇文章主要介紹了Python下載指定頁(yè)面上圖片的方法,涉及Python的正則匹配、URL及文件操作相關(guān)技巧,需要的朋友可以參考下
    2016-05-05
  • python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注

    python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注

    這篇文章主要介紹了python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注,幫助大家更好的利用Matplotlib繪制圖表,感興趣的朋友可以了解下
    2021-01-01
  • 詳解python持久化文件讀寫(xiě)

    詳解python持久化文件讀寫(xiě)

    這篇文章主要介紹了python持久化文件讀寫(xiě),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Django框架中render_to_response()函數(shù)的使用方法

    Django框架中render_to_response()函數(shù)的使用方法

    這篇文章主要介紹了Django框架中render_to_response()函數(shù)的使用方法,注意范例中該方法的參數(shù)的使用,需要的朋友可以參考下
    2015-07-07
  • PyTorch環(huán)境中CUDA版本沖突問(wèn)題排查與解決方案

    PyTorch環(huán)境中CUDA版本沖突問(wèn)題排查與解決方案

    在使用 PyTorch 進(jìn)行深度學(xué)習(xí)開(kāi)發(fā)時(shí),CUDA 版本兼容性問(wèn)題是個(gè)老生常談的話題,本文將通過(guò)一次真實(shí)的排查過(guò)程,剖析 PyTorch 虛擬環(huán)境自帶 CUDA 運(yùn)行時(shí)庫(kù)與系統(tǒng)全局 CUDA 環(huán)境沖突的場(chǎng)景,需要的朋友可以參考下
    2025-02-02
  • 使用 Python 寫(xiě)一個(gè)簡(jiǎn)易的抽獎(jiǎng)程序

    使用 Python 寫(xiě)一個(gè)簡(jiǎn)易的抽獎(jiǎng)程序

    這篇文章主要介紹了使用 Python 寫(xiě)一個(gè)簡(jiǎn)易的抽獎(jiǎng)程序,本文通過(guò)實(shí)例代碼,思路講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • pymilvus?offset參數(shù)不生效解決示例

    pymilvus?offset參數(shù)不生效解決示例

    這篇文章主要為大家介紹了pymilvus?offset參數(shù)不生效解決示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • python基礎(chǔ)教程之縮進(jìn)介紹

    python基礎(chǔ)教程之縮進(jìn)介紹

    這篇文章主要介紹了python基礎(chǔ)教程之縮進(jìn)介紹,本文以if語(yǔ)句為例講解python中的縮進(jìn),需要的朋友可以參考下
    2014-08-08

最新評(píng)論

板桥市| 怀化市| 桐乡市| 柘城县| 和田县| 襄城县| 泸州市| 进贤县| 清新县| 清镇市| 平凉市| 葵青区| 阳城县| 北辰区| 太仆寺旗| 上犹县| 临湘市| 山阴县| 西安市| 定兴县| 哈密市| 志丹县| 屏山县| 鹿邑县| 阿克苏市| 南皮县| 蒙自县| 长沙县| 龙南县| 建水县| 武乡县| 南江县| 静海县| 祁阳县| 大理市| 平江县| 班玛县| 章丘市| 高雄市| 宁河县| 锦州市|