Pinchy是一个基于Python+FastAPI开发的脚本调度执行系统,支持通过cron表达式调度执行Python和Node.js脚本。 支持Windows、Linux、Docker多种部署方式。
- 🔐 单用户认证系统 - 密码登录保护、多因素验证、账户安全策略
- 📁 文件管理 - 上传、删除、管理scripts目录下的脚本文件
- ⏰ 任务调度 - 使用cron表达式配置任务执行时间
- 📊 实时日志 - WebSocket实时查看任务执行日志
- 🌍 环境变量管理 - 为脚本配置环境变量
- 📦 包管理 - 安装和删除Python/Node.js依赖包
- 💾 数据持久化 - 使用SQLite存储所有配置和日志
- 🎨 现代化界面 - TailwindCSS+响应式设计,完美适配移动端
- Python 3.10+
- Node.js (如需执行Node.js脚本)
- Git (用于获取脚本订阅)
- 程序运行需要安装上述环境,如缺失环境请先下载并运行环境安装器Env_installer.exe,123Pan
- 在发行版页面下载含启动器的程序包Pinchy_1.25.x_Win64_Launcher.zip
- 解压下载的文件
- 运行pinchy-launcher.exe
- 配置运行端口和选择是否开启外部访问(开启后才能通过其他设备访问)
- 点击“启动服务”按钮等待启动完成,窗口右侧会显示启动状态(显示“Application startup complete.”即表示启动完成)
- 访问系统地址,默认端口为8000,如http://127.0.0.1:8000 (默认账号admin密码admin)
- 拉取Pinchy镜像
docker pull crpi-9kf3ygmifxk82biy.cn-chengdu.personal.cr.aliyuncs.com/pinchy/pinchy:latest
- 运行容器,访问系统地址,默认端口为8000,如http://服务器IP:8000 (默认账号admin密码admin)
-
确保已安装Python 3.10+、Node.js和Git
# 检查Python版本 python3 --version # 检查Node.js版本 node --version # 检查Git版本 git --version
-
下载最新版本的Pinchy
git clone https://github.com/3iXi/Pinchy.git cd Pinchy -
安装依赖并通过 nohup 后台运行
# 安装 Python 依赖 pip3 install -r requirements.txt # 启动 Pinchy(使用nohup在后台运行,日志写入pinchy.log) nohup python3 run.py > pinchy.log 2>&1 & echo "Pinchy已在后台启动,进程ID: $!"
-
服务管理常用命令
# 停止服务 pkill -f "python3 run.py" # 或者 kill <PID>(如果你记录了启动时输出的PID) # 重启服务(示例) pkill -f "python3 run.py"; sleep 2; nohup python3 run.py > pinchy.log 2>&1 & # 查看服务状态与实时日志 ps aux | grep run.py tail -f pinchy.log
- 访问系统地址,默认端口为8000,如http://服务器IP:8000 (默认账号admin密码admin)
- 在"文件管理"页面上传Python(.py)或Node.js(.js)脚本,并点击复制路径按钮
- 支持创建目录和脚本文件
- 可以在线预览、编辑、下载、删除文件
- 在"任务管理"页面创建新任务
- 配置任务信息:
- 任务名称和描述
- 脚本路径(粘贴刚才复制的脚本路径)
- 脚本类型(python或nodejs)
- Cron表达式(如:
0 */1 * * *表示每小时整点运行一次)可通过生成器快速生成Cron表达式
- 在"环境变量"页面管理全局环境变量
- 脚本可以通过
os.environ(Python)或process.env(Node.js)访问 - 脚本可通过判断环境变量pinchyX是否有值来判断是否在Pinchy中运行
- 在"包管理"页面安装Python或Node.js包
- 支持指定版本安装
- 查看已安装包列表
- 在"执行日志"页面查看任务执行历史
- 支持按任务和状态过滤日志
- 在"脚本订阅"页面添加Git订阅链接
- 支持添加多个订阅链接
- 支持使用代理获取订阅
- 支持自动创建任务
- 在"通知服务"页面配置通知服务
- 支持使用邮件、Telegram、钉钉、企微、Bark、Server酱、PushPlus、WxPusher等多种通知方式
- 支持配置通知发送条件(如只在任务失败时发送)
- 支持关键词监控
- 集成SendNotify模块,可直接在脚本中调用send(标题, 内容)使用选择的通知方式发送通知
- 在"接口调试"页面可以调试接口,支持POST、GET请求方式
- 支持定时获取接口数据
- 支持使用通知服务推送接口数据
- 支持使用cURL/fetch语法导入接口数据
- 支持在请求中使用部分变量(时间戳、随机数、环境变量)
- 在"系统设置"页面可以配置系统参数
- 支持在线检查版本更新和查看更新内容
- 支持配置账户安全策略(包括多因素认证)
- 提供多种配色主题方案(包括深色模式)
- 支持修改Python/Node.js运行命令路径和包管理器
Pinchy/
├── app/ # 应用核心代码
│ ├── main.py # FastAPI应用入口
│ ├── database.py # 数据库配置
│ ├── models.py # 数据库模型
│ ├── auth.py # 登录认证模块
│ ├── scheduler.py # 任务调度器
│ ├── websocket.py # WebSocket管理(已弃用)
│ ├── websocket_manager.py # WebSocket连接管理
│ └── routers/ # API路由
├── static/ # 静态文件
│ ├── index.html # 前端页面
│ ├── css/tailwind.min.css # 前端样式表(已构建)
│ ├── images\favicon.ico # 图标
│ ├── images\logo.png # Logo
│ ├── js/app.js # 前端逻辑
├── scripts/ # 用户脚本存储目录
│ ├── SendNotify.py # 通知模块
├── logs/ # 日志文件目录(EXE启动器使用)
├── requirements.txt # Python依赖
├── run.py # 启动脚本
└── README.md # 说明文档
- 后端: Python, FastAPI, SQLAlchemy, APScheduler
- 数据库: SQLite
- 前端: HTML, TailwindCSS, Alpine.js
- 实时通信: WebSockets
- 务必修改app/auth.py中23行的SECRET_KEY第二个引号中的内容为随机字符串 (使用Win启动器的不用,启动器会随机生成安全密钥)
- 修改默认管理员密码
- 确保scripts目录的访问权限设置正确
- 定期备份数据库文件(pinchy.db)
-
任务不执行
- 检查cron表达式格式是否正确
- 确认任务状态为"启用"
- 查看执行日志中的错误信息
-
脚本执行失败
- 确认Python/Node.js环境已正确安装
- 检查脚本路径是否正确
- 查看错误日志排查脚本问题
-
WebSocket连接失败
- 检查防火墙设置
- 确认浏览器支持WebSocket