使用Julia与Genie构建REST服务:命令行启动后立即停止的解决方法
解决Genie服务在命令行脚本中立即退出的问题
当直接通过命令行执行julia myrestapi.jl时,Genie的up()方法默认以异步模式启动,不会阻塞主线程,导致脚本执行完毕后直接退出。可以通过以下几种方式让服务器持续运行:
方法一:启用同步启动模式
Genie的up()函数支持async参数,默认值为true(异步启动)。将该参数设置为false,服务器会在主线程中同步运行,从而保持程序不退出:
using Genie # 定义你的路由逻辑 route("/") do "Hello from Genie REST API!" end # 同步启动服务器,阻塞主线程 up(8888, async=false)
方法二:用wait()阻塞主线程
在调用up(8888)之后,添加wait()函数让主线程保持阻塞状态,直到收到中断信号(如Ctrl+C):
using Genie route("/") do "Hello from Genie REST API!" end up(8888) # 阻塞主线程,防止程序退出 wait()
方法三:手动循环等待中断
你也可以通过循环+睡眠的方式,让程序持续运行直到收到终止指令:
using Genie route("/") do "Hello from Genie REST API!" end up(8888) # 持续运行直到收到中断信号 try while true sleep(1) end catch e if e isa InterruptException println("Shutting down server gracefully...") else rethrow(e) end end
以上方法都能确保脚本在命令行运行时,服务器持续保持在线,直到你主动通过Ctrl+C终止程序。
内容的提问来源于stack exchange,提问作者Michael Hecht
相关产品推荐
相关产品推荐

