我尝试使用 Julia 和 Genie 库构建一个小的 REST 服务。最后一个命令是 up(8888)
。
当我从 Julia REPL 启动时一切正常。
当我从 >julia myrestapi.jl
之类的命令行启动它时,程序会立即启动和停止,即 up()
不会进入无限循环。
我该怎么做才能让服务器保持运行?
最佳答案
当 Genie 服务器以异步模式启动时,它会运行主任务,并允许脚本处理继续进行。如果脚本结束,整个进程及其派生的任务将停止。此行为不利于正在运行的 Web 服务。为了防止这种情况发生,有两个建议:
- 通过同步运行,不要让服务器脱离主任务运行。在代码中:
Genie.config.run_as_server = true
...
Genie.Server.up()
- 确保主进程在服务器任务结束之前不会结束。在代码中:
Base.JLOptions().isinteractive == 0 && wait()
isinteractive
条件,仅当它作为脚本运行时才运行 wait()
,正如在交互式 session 中存在 REPL 时的通常期望,是发出更多命令,REPL 使服务器任务在后台运行。
关于rest - 避免为 REST 服务停止 Julia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74274816/