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 以查找并诊断问题。
限制
生产模式不支持热重载,代码更改必须通过停止并重启服务器来应用。资料未提供关于具体平台、价格或收费方式的信息。