SuperAPI AI 工具集

reflex-process-management

部署与运维

查看项目

更新于 10-15 18:07

技能介绍

Reflex Process Management 技能介绍

用途

该技能覆盖如何编译、运行与重新加载 Reflex 应用,适用于对 Reflex 应用进行验证、启动生产服务器以及在排查错误时重启应用的场景。

编译(测试应用)

要验证应用能否无错误编译,运行:

reflex compile --dry

该命令在不启动服务器的情况下检查语法错误、导入问题和组件问题。在做出更改后,可将其作为快速验证步骤使用。

运行服务器

当被要求运行 Reflex 服务器时,始终使用生产模式并将输出重定向到日志文件:

reflex run --env prod --single-port 2>&1 | tee reflex.log

该命令会启动一个长期运行的服务器进程;生产模式下不支持热重载。代码更改不会被自动捕获,必须停止并重启服务器才能应用更改(见下文“重新加载正在运行的应用”)。

使用 2>&1 | tee reflex.log 可同时将 stdout 与 stderr 捕获到 reflex.log,并仍在终端中打印。

重要提示:除非用户明确要求开发模式,否则始终使用 --env prod。

重新加载正在运行的应用

要在不手动从终端停止并重启的情况下重新加载应用,请按以下步骤操作:

第 1 步:确定应用端口

读取 reflex.log 以找到应用正在监听的端口。查找类似 App running at: http://0.0.0.0:<port> 的行。不要假设端口是 8000。

第 2 步:找到应用进程

使用第 1 步中获得的端口,定位正在监听的进程(而非浏览器连接):

lsof -i :<port> -sTCP:LISTEN -t

-sTCP:LISTEN 标志非常关键——它只筛选出正在监听该端口的服务器进程,排除浏览器或客户端连接。若不加该标志,可能会终止用户的浏览器。

如果 lsof 不可用,请使用:

ss -tlnp | grep :<port>

或:

fuser <port>/tcp

第 3 步:发送中断信号

向进程发送 SIGINT(等同于 Ctrl+C)以优雅地停止进程:

kill -INT $(lsof -i :<port> -sTCP:LISTEN -t)

如果进程未停止,升级为 SIGTERM:

kill -TERM $(lsof -i :<port> -sTCP:LISTEN -t)

第 4 步:重启服务器

旧进程退出后,清空旧日志并再次启动服务器:

reflex.log reflex run --env prod --single-port 2>&1 | tee reflex.log

排查错误

当用户报告错误时,读取 reflex.log 以查找并诊断问题。

限制

生产模式不支持热重载,代码更改必须通过停止并重启服务器来应用。资料未提供关于具体平台、价格或收费方式的信息。