闪亮:它如何处理并发请求?

Shiny: how does it handle concurrent requests?

如果我使用

启动 Shiny 应用程序
R -e 'shiny::runApp("/app", host="0.0.0.0", port=8888)'

它如何处理并发请求/它的工作模型是什么?

是否每个请求都在不同的线程、进程中处理,是否使用事件循环模型,甚至一次只处理一个请求?

  1. 因为 R 是单线程的,所以 shiny,它建立在 node
  2. 之上
  3. 所有会话都通过 websocket 连接到该线程
  4. 使用标准 event loop model
  5. 的传统闪亮响应式编程
  6. 有一个 flush cycle 的概念,它执行以下操作:receiving, updating, reacting, and sending 所以当 reactivesobservers 更新时,不可能更新其他输入。这样做是为了避免竞争条件
  7. 您可以通过使用 promises 程序包
  8. shiny 中利用 async 编程
  9. 如果您想集成一些更高级的 js 库,您可以使用 V8
  10. 您还可以 integrate react.jsshiny