# ip_pool **Repository Path**: daoda---product-center/ip_pool ## Basic Information - **Project Name**: ip_pool - **Description**: ip池管理服务 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-10 - **Last Updated**: 2026-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ip_pool # 这个项目暂时没用 ## 项目说明 使用拨号机搭建的IP代理池 ## 采集内容 - 项目类型:Web Server 接口服务。 - 主要入口:`server_main.py`, `application.py`。 - 配置文件:`config/config.py`, `config/config.py`, `config/__init__.py`。 ## 使用技术 - Redis 任务队列、状态缓存或指纹存储 - Tornado HTTP 接口服务 - requests 同步 HTTP 请求 - Docker 容器化部署 - Shell 启停脚本与 cron 定时任务 - 主要依赖:`tornado`, `tornado-swagger`, `requests`, `redis`, `scikit-learn`, `paramiko`。 ## 接口清单 | 方法 | 路径 | 功能 | 处理器 | | --- | --- | --- | --- | | `GET` | `/api/ip_pool/ip_get` | 从代理池获取可用代理 IP | `IpGetHandler`
`views/ip_get.py` | | `GET` | `/api/ip_pool/ip_call` | 触发代理服务器拨号/切换 IP | `IpCallHandler`
`views/ip_call.py` | | `GET` | `/api/ip_pool/ip_check` | 检测代理池 IP 可用性 | `IpCheckHandler`
`views/ip_check.py` | | `POST` | `/api/ip_pool/ip_update` | 更新代理池 IP 信息 | `IpUpdateHandler`
`views/ip_update.py` | 说明:接口路径来自项目路由配置与 `views/` 处理器静态解析,具体请求参数以对应处理器函数签名、Swagger 页面或调用方约定为准。 ## 项目流程图 ```mermaid flowchart TD A1["接口或定时任务更新代理 IP"] A2["写入 Redis 分类代理池"] A1 --> A2 A3["检测代理可用性"] A2 --> A3 A4["对外提供获取代理接口"] A3 --> A4 A5["异常时触发拨号或状态更新"] A4 --> A5 ``` ## 部署方式 1. 本地调试或非容器运行前,安装依赖:`pip install -r requirements.txt`。 2. 构建镜像:`docker build -t ip_pool:latest .`。 3. 启动容器:`sh docker_run.sh`。该脚本中的镜像名为 `ip_pool:latest`,容器名为 `ip_pool`。 4. 服务启动逻辑:Dockerfile 已配置 `ENTRYPOINT` 执行 `rongqi_start.sh`,容器启动后会自动执行 `server_restart.sh`,通常不需要再手动执行 restart 脚本。 5. 手动重启服务:进入容器后执行 `sh server_restart.sh`。 6. 停止服务:进入容器后执行 `sh server_stop.sh`。 7. 查看容器:`docker ps | grep ip_pool`;查看日志:`docker logs -f ip_pool`,或进入容器后查看项目 `logs/`、`*.log`、`server.log`、`service.log`。 8. 定时任务:项目包含 `cronjobs`,Dockerfile 会写入 crontab;容器启动后由 `rongqi_start.sh` 启动 cron。 9. 部署前请确认配置中的 Redis、Kafka、MinIO、代理池、账号 Key、回调地址等外部依赖均可访问。 ## 异常排查 - 项目使用 `custom_log.create_logging(...)` 生成按天轮转日志,优先检查 `logs/` 目录和以模块名命名的日志文件。 - 服务异常时先查看容器/进程是否运行,再结合 `*_restart.sh`、`restart.sh`、`*_stop.sh` 脚本重启验证。 - 容器部署时可通过 `docker ps` 确认容器状态,通过 `docker logs -f <容器名或容器ID>` 查看标准输出。 - 若任务不消费或重复消费,检查 Redis 队列 key、连接配置、任务 JSON 格式和失败重试次数。 - 若请求超时、403 或连接失败,检查代理池可用性、目标站点封禁和代理认证配置。 - 采集无结果时,先确认任务是否成功下发,再检查目标站点响应状态、代理/Cookie/API Key 是否失效。 - 解析字段为空时,优先对比目标页面结构是否变更,并查看解析模块中输出的异常堆栈或字段缺失日志。 - 容器内排查常用命令:`docker ps`、`docker logs -f `、`docker exec -it /bin/bash`。 - 本地排查常用命令:`tail -f logs/*.log`、`grep -R "ERROR\|Exception\|Traceback" logs/`。 ## 目录提示 - `Dockerfile` / `docker_run.sh`:容器构建与启动相关文件。 - `requirements.txt`:Python 依赖列表。 - `settings.py` / `config.py`:爬虫或服务运行配置。 - `spiders/`:Scrapy 采集逻辑目录。 - `methods/` / `views/`:通用处理方法与接口处理器。