proxyPool
setting.py
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
File Name: setting.py
Description : 配置文件
Author : JHao
date: 2019/2/15
-------------------------------------------------
Change Activity:
2019/2/15:
-------------------------------------------------
"""
BANNER = r"""
****************************************************************
*** ______ ********************* ______ *********** _ ********
*** | ___ \_ ******************** | ___ \ ********* | | ********
*** | |_/ / \__ __ __ _ __ _ | |_/ /___ * ___ | | ********
*** | __/| _// _ \ \ \/ /| | | || __// _ \ / _ \ | | ********
*** | | | | | (_) | > < \ |_| || | | (_) | (_) || |___ ****
*** \_| |_| \___/ /_/\_\ \__ |\_| \___/ \___/ \_____/ ****
**** __ / / *****
************************* /___ / *******************************
************************* ********************************
****************************************************************
"""
VERSION = "2.4.0"
# ############### server config ###############
HOST = "0.0.0.0"
PORT = 5010
# ############### database config ###################
# db connection uri
# example:
# Redis: redis://:password@ip:port/db
# Ssdb: ssdb://:password@ip:port
DB_CONN = 'redis://:@x.x.x.x:x/0'
# proxy table name
TABLE_NAME = 'use_proxy'
# ###### config the proxy fetch function ######
PROXY_FETCHER = [
"freeProxy01",
"freeProxy02",
"freeProxy03",
"freeProxy04",
"freeProxy05",
"freeProxy06",
"freeProxy07",
"freeProxy08",
"freeProxy09",
"freeProxy10",
"freeProxy11"
]
# ############# proxy validator #################
# 代理验证目标网站
HTTP_URL = "http://httpbin.org"
HTTPS_URL = "https://www.qq.com"
# 代理验证时超时时间
VERIFY_TIMEOUT = 10
# 近PROXY_CHECK_COUNT次校验中允许的最大失败次数,超过则剔除代理
MAX_FAIL_COUNT = 0
# 近PROXY_CHECK_COUNT次校验中允许的最大失败率,超过则剔除代理
# MAX_FAIL_RATE = 0.1
# proxyCheck时代理数量少于POOL_SIZE_MIN触发抓取
POOL_SIZE_MIN = 30
# ############# proxy attributes #################
# 是否启用代理地域属性
PROXY_REGION = True
# ############# scheduler config #################
# Set the timezone for the scheduler forcely (optional)
# If it is running on a VM, and
# "ValueError: Timezone offset does not match system offset"
# was raised during scheduling.
# Please uncomment the following line and set a timezone for the scheduler.
# Otherwise it will detect the timezone from the system automatically.
TIMEZONE = "Asia/Shanghai"
这段代码是一个配置文件,用于配置一个代理池项目。它定义了一些全局变量和配置选项,用于控制代理池的行为和功能。
代码中的注释已经提供了一些基本的说明,下面是对代码功能的详细解释:
BANNER
:定义了一个用于显示的横幅字符串,通常在命令行界面或日志中打印出来,用于标识程序的名称和版本等信息。VERSION
:定义了代理池软件的版本号。HOST
和PORT
:定义了代理池服务监听的地址和端口号。DB_CONN
:定义了数据库连接的URI,这里使用的是Redis数据库作为存储代理信息的后端。TABLE_NAME
:定义了代理信息存储的表名。PROXY_FETCHER
:定义了一个列表,包含了用于获取代理的函数名称。这些函数将被周期性地调用,以获取新的代理并加入到代理池中。HTTP_URL
和HTTPS_URL
:定义了用于验证代理可用性的目标网站URL。VERIFY_TIMEOUT
:定义了代理验证时的超时时间,单位是秒。MAX_FAIL_COUNT
和MAX_FAIL_RATE
:这两个变量用于控制代理的剔除策略。如果一个代理在近期的校验中失败次数超过MAX_FAIL_COUNT
,或者失败率超过MAX_FAIL_RATE
,则会被剔除出代理池。
# 当进行代理检查时,如果代理数量少于POOL_SIZE_MIN,则触发抓取新的代理。
POOL_SIZE_MIN = 30
上述代码定义了一个常量POOL_SIZE_MIN
,其值为30。这意味着,当系统检测到可用代理的数量少于30时,它会触发一个机制去抓取或寻找更多的代理,以确保系统中始终有足够数量的代理。
# 是否启用代理地域属性
PROXY_REGION = True
这里定义了一个布尔值常量PROXY_REGION
,并设置其为True。这意味着系统在处理代理时会考虑代理的地域属性。例如,某些任务可能只希望使用特定地区的代理。
# ############# scheduler config #################
这是一个注释,指示以下的配置是与“调度器”相关的。
# Set the timezone for the scheduler forcely (optional)
# If it is running on a VM, and
# "ValueError: Timezone offset does not match system offset"
# was raised during scheduling.
# Please uncomment the following line and set a timezone for the scheduler.
# Otherwise it will detect the timezone from the system automatically.
上述代码是一个注释,解释了以下配置的目的:为调度器强制设置时区(可选)。如果调度器在虚拟机上运行并且在调度期间引发了“ValueError: Timezone offset does not match system offset”这样的错误,则应该取消注释下面的行并为调度器设置一个时区。如果不进行这样的设置,调度器将自动从系统中检测时区。
TIMEZONE = "Asia/Shanghai"
此行定义了一个常量TIMEZONE
并为其赋值了"Asia/Shanghai"。这意味着调度器的时区被设置为上海时区。如果上述注释中描述的问题出现,这将是一个有效的解决方案。如果不需要强制设置时区,这行代码可以被注释掉。