funcron
基于 Flask 与 Airflow 的定时任务调度管理中心,提供 Web 管理后台,以及 server(管理后台)/ scheduler/webserver/worker/flower(Airflow 各角色)/coin(行情下载)等长期运行服务。
安装
uv add funcron
# 或
pip install funcron
最小可运行示例
安装完成后,funcron 命令行提供两个查询类子命令:
# 查看本机常用服务端口的可访问状态
funcron status
# 列出 scripts/setup.sh 支持托管的服务名
funcron services
长期运行服务的启停不走 CLI,统一由 scripts/setup.sh 管理,见下一节。
服务启动(scripts/setup.sh)
生产环境或本地长期运行各服务,统一通过 scripts/setup.sh 管理,按 动作 → 服务 → 环境 解析参数:
# 用法: scripts/setup.sh {start|stop|restart|run} <service> <dev|prod>
# scripts/setup.sh status <service> [dev|prod]
# <service>: server | airflow-webserver | airflow-scheduler | airflow-worker
# | airflow-flower | coin | all
# 后台启动生产环境的 Web 管理后台
scripts/setup.sh start server prod
# 前台运行开发环境的 Airflow scheduler,方便调试
scripts/setup.sh run airflow-scheduler dev
# 查看所有服务在 dev 与 prod 两个环境下的状态(status 的环境参数可省略)
scripts/setup.sh status all
# 只看生产环境
scripts/setup.sh status all prod
start/stop/restart 管理后台进程,run 是前台阻塞运行,方便调试单个服务,不支持 all。
start/stop/restart/run 必须显式带 dev 或 prod;只有 status 允许省略环境参数,
省略时依次报告两个环境。
PID、进程身份记录与日志统一放在仓库根目录的 .run/ 下(按「服务名-环境」区分)。重复启动检查会
校验 PID 对应进程的启动时刻与命令特征:进程已退出的陈旧 PID 文件会被清理后继续启动;PID 已被
其他进程复用时拒绝操作并提示人工确认,不会误杀无关进程。
prod 环境要求 funcron / airflow / funcoin 已安装为正式包:校验会清空 PYTHONPATH、用
Python 隔离模式导入,并断言模块文件落在 site-packages 下,因此 editable 安装(pip install -e、
uv sync)或直接从源码工作树运行都会被拒绝;prod 下 gunicorn 的配置文件也从已安装包内解析,
不引用仓库源码。本地源码调试请用 dev。
凭据配置
数据库密码、Web 登录密码、Redis 密码、通知 API key、API access token、Flask session key
均从 funsecret 读取,不提供默认凭据。对应路径位于 funcron/database/mysql/password、
funcron/web/login/password、funcron/redis/password、funcron/notice/error_api_key、
funcron/api/access_token 和 funcron/web/flask/secret_key。缺少登录密码时 Web 登录会拒绝访问;
缺少 API access token 时 API 会返回配置错误;可选的 Redis 密码和通知 API key 为空时不启用相应认证或通知。
Flask 配置名可取 development / testing / production / default,由 create_app(config_name)
显式选择。只有 development 会开启 DEBUG;default 指向生产配置,testing 只开 TESTING。
工作目录
数据库文件、日志与中间文件放在工作目录下,按以下顺序解析:FUNCRON_APP_DIR 环境变量 →
FUNDATA_APP_DIR 环境变量 → /opt/farfarfun/apps/funcron(当前用户可写时)→ ~/.funcron。
显式设置环境变量时按设置值使用,不再做可写性回落。
开发
uv sync
uv run pytest
uv run ruff check
uv run ruff format --check
源码采用 src 布局(src/funcron/),因此在仓库根目录直接 import funcron 不会命中工作树,
需要先 uv sync 安装。
关于 farfarfun
farfarfun 是一个专注于实用工具库的开源组织, 涵盖云存储、数据处理、AI、多媒体与开发工具链等方向。
- 🏠 组织主页:https://github.com/farfarfun
- 📦 PyPI:https://pypi.org/user/niuliangtao/
- 📧 联系:farfarfun@qq.com
本项目基于 MIT 协议开源。
Metadata
Release files for funcron 0.5.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| funcron-0.5.9-py3-none-any.whl | Python 3 | none | any | Details |
Release files / funcron-0.5.9-py3-none-any.whl
| Download URL | funcron-0.5.9-py3-none-any.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
609d265595211d3b5ef384ff5713080d7a1958f5cf7515b096f10c4a4971b7af
|
|
BLAKE2b-256 checksum How to use checksums |
d57910a0776311104fab3b3ed8a5f25cb9f7b171ceff2b637aa70b472b2a96af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|