Metadata-Version: 2.4
Name: django-scrapyd-manager
Version: 0.2.2
Summary: A Django application for managing Scrapyd nodes, projects, spiders and jobs
Author-email: Cone387 <1183008540@qq.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/cone387/DjangoScrapydManager
Project-URL: Repository, https://github.com/cone387/DjangoScrapydManager
Keywords: django,scrapyd,scrapy,web-scraping,manager
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 5.2
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: django>=5.2.5
Requires-Dist: requests>=2.32.4
Requires-Dist: django-sched>=0.1.3
Dynamic: license-file

# DjangoScrapydManager

DjangoScrapydManager 是一个用于管理 Scrapyd 节点的 Django 应用，提供了对 Scrapyd 节点、项目、版本、爬虫和任务的完整管理功能。

## 功能特性

- **节点管理**：添加、编辑和删除 Scrapyd 节点，支持认证和 SSL
- **项目管理**：查看和管理 Scrapyd 上的项目
- **版本管理**：查看、部署和删除项目版本
- **爬虫管理**：查看爬虫信息，支持爬虫分组
- **任务管理**：启动、停止爬虫任务，查看任务状态和日志
- **数据同步**：自动同步 Scrapyd 节点上的项目、版本、爬虫和任务信息
- **爬虫组管理**：自定义爬虫组, 一次启动多个爬虫
- **监控job**：监控爬虫组状态, 自动重启爬虫

## 技术栈

- Python 3.13+
- Django 5.2.5+
- Requests 2.32.4+

## 安装方法
```python
INSTALLED_APPS = [
    "django_scrapyd_manager"
]
```

## 使用方法

### 1. 添加 Scrapyd 节点

首先需要添加一个 Scrapyd 节点，包括节点名称、IP 地址、端口等信息。如果 Scrapyd 服务需要认证，可以勾选 "需要认证" 并填写用户名和密码。

### 2. 同步项目信息

添加节点后，系统会自动同步该节点上的项目、版本和爬虫信息。

### 3. 管理爬虫任务

- **启动爬虫**：选择一个爬虫，点击 "启动" 按钮即可启动爬虫任务
- **停止爬虫**：可以停止单个任务或某个爬虫的所有任务
- **创建爬虫组**：可以将多个爬虫添加到一个组中，方便批量管理

### 4. 查看任务状态

系统会定期同步任务状态，您可以在任务列表中查看任务的运行状态、开始时间、结束时间等信息。

## 核心模型

### Node

表示一个 Scrapyd 节点，包含节点名称、IP 地址、端口、认证信息等。

### Project

表示 Scrapyd 上的一个项目，属于某个节点。

### ProjectVersion

表示项目的一个版本，可以包含多个爬虫。

### Spider

表示一个爬虫，属于某个项目版本。

### SpiderGroup

表示一组爬虫，可以批量管理多个爬虫。

### Job

表示一个爬虫任务，记录任务的状态、开始时间、结束时间等信息。


## 注意事项

1. 请确保 Scrapyd 服务已经正确安装并运行
2. 对于需要认证的 Scrapyd 服务，请正确配置认证信息
3. 系统会定期同步数据，也可以手动触发同步
4. 部署新版本时，需要提供正确的 egg 文件路径


## 下个版本规划

- [ ] **Guardian 信号机制**  
  - 在项目发布版本时发送 `pre_publish` / `post_publish` 信号  
  - 在爬虫任务启动、结束时发送 `pre_job_start` / `post_job_finish` 信号  
  - 方便外部系统监听并执行自定义逻辑（如通知、审计、自动化处理）

- [ ] **任务指标展示**  
  - 在任务详情中展示类似 ScrapydWeb 的运行指标：  
    - `page_nums`（已抓取页面数）  
    - `item_nums`（已采集 item 数量）  
  - 支持任务运行中实时刷新


## 贡献指南

欢迎提交 issue 和 pull request 来帮助改进这个项目。

## 许可证

[MIT License](LICENSE)
