Skip to main content

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、多媒体与开发工具链等方向。

本项目基于 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)

Table of built distributions (wheels) for funcron 0.5.9
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.5.9 This release

1 release file

0.5.7

1 release file

0.5.6

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page