proxyPool.py
proxyPool.py注释
主要是注册命令行命令,启动服务
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
File Name: proxy_pool
Description : proxy pool 启动入口
Author : JHao
date: 2020/6/19
-------------------------------------------------
Change Activity:
2020/6/19:
-------------------------------------------------
"""
__author__ = 'JHao'
import click
from helper.launcher import startServer, startScheduler
from setting import BANNER, VERSION
CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
@click.group(context_settings=CONTEXT_SETTINGS)
@click.version_option(version=VERSION)
def cli():
"""ProxyPool cli工具"""
@cli.command(name="schedule")
def schedule():
""" 启动调度程序 """
click.echo(BANNER)
startScheduler()
@cli.command(name="server")
def server():
""" 启动api服务 """
click.echo(BANNER)
startServer()
if __name__ == '__main__':
cli()
这段代码是一个Python脚本,用于启动一个名为"ProxyPool"的代理池。代码使用Click库来创建命令行接口(CLI),并通过这个接口来启动和管理代理池的不同组件。下面是对代码的详细注释和解析:
-
导入依赖:
import click
:导入Click库,这是一个用于创建优雅的命令行接口的Python库。from helper.launcher import startServer, startScheduler
:从helper模块的launcher文件中导入两个函数——startServer
和startScheduler
。这两个函数分别用于启动API服务和调度程序。from setting import BANNER, VERSION
:从setting模块中导入BANNER和VERSION两个变量。BANNER可能是一个用于在命令行中显示的欢迎信息或标识,而VERSION则是代理池软件的版本号。
-
定义全局变量和设置:
__author__ = 'JHao'
:定义了一个全局变量,存储了代码的作者信息。CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
:定义了一个字典类型的上下文设置,指定了在使用命令行工具时,用户可以通过哪些选项来获取帮助信息。在这里,用户可以使用“-h”或“–help”来查看帮助信息。
-
创建命令行接口:
@click.group(context_settings=CONTEXT_SETTINGS)
:这是一个装饰器,用于创建一个Click命令组。context_settings
参数将先前定义的上下文设置应用于这个命令组。@click.version_option(version=VERSION)
:这是另一个装饰器,用于为这个命令组添加一个版本选项。用户可以通过这个选项来查看代理池的版本号。def cli():
:定义了一个名为cli的函数,作为命令行接口的入口点。这个函数的文档字符串提供了对命令行工具的简短描述。
-
添加命令到命令行接口:
@cli.command(name="schedule")
:定义一个名为"schedule"的子命令,用于启动调度程序。def schedule():
:定义了与"schedule"子命令关联的函数。当用户在命令行中运行"schedule"命令时,这个函数将被执行。函数内部调用了先前导入的startScheduler
函数来实际启动调度程序,并使用click.echo(BANNER)
来在命令行中显示BANNER信息。@cli.command(name="server")
:定义一个名为"server"的子命令,用于启动API服务。def server():
:定义了与"server"子命令关联的函数。当用户在命令行中运行"server"命令时,这个函数将被执行。与"schedule"命令类似,它调用了startServer
函数来启动API服务,并在命令行中显示BANNER信息。
-
脚本的入口点:
if __name__ == '__main__':
:这是Python脚本的标准入口点检查。当脚本被直接运行时,__name__
变量的值将是'__main__'
,因此下面的代码块将被执行。如果脚本是作为模块导入到其他代码中,则这个代码块不会被执行。cli()
:最后,调用了先前定义的cli函数,这将启动整个命令行接口并等待用户输入命令。