# 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/`:通用处理方法与接口处理器。