You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求可响应/stop请求后程序化停止的HTTP Web Server R包

在R中实现可程序化停止的HTTP服务器

可以用httpuv包实现这个需求,通过手动控制服务循环,在收到/stop请求后触发停止逻辑,具体代码如下:

library(httpuv)

# 初始化停止标记
stop_flag <- FALSE

# 定义请求处理逻辑
request_handler <- function(req) {
  if (req$PATH_INFO == "/stop") {
    # 触发停止标记
    stop_flag <<- TRUE
    # 返回停止响应
    list(
      status = 200L,
      headers = list('Content-Type' = 'text/plain'),
      body = "服务器即将停止..."
    )
  } else {
    # 默认响应
    list(
      status = 200L,
      headers = list('Content-Type' = 'text/plain'),
      body = "R服务器运行中,访问 /stop 可停止服务。"
    )
  }
}

# 启动非阻塞服务器
server_instance <- startServer(host = "0.0.0.0", port = 8080, app = list(call = request_handler))

# 循环处理请求,直到触发停止标记
while (!stop_flag) {
  service(0.01)  # 每次检查间隔0.01秒,避免过度占用CPU
}

# 停止服务器
stopServer(server_instance)

# 执行后续处理工作
cat("服务器已停止,开始执行后续任务...\n")
# 在这里添加你的后续处理代码

代码说明

  • 用startServer启动非阻塞服务器,替代阻塞式的runServer,这样能主动控制服务生命周期。
  • 访问/stop端点时,全局变量stop_flag被设为TRUE,循环退出后调用stopServer关闭服务。
  • 循环中的service(0.01)会处理 pending 的请求,同时保持较低的CPU占用。

测试时,访问http://localhost:8080/stop,服务器返回响应后自动停止,随后执行后续处理代码。

内容的提问来源于stack exchange,提问作者jimbod119

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:20:12