r语言 - Shiny:它如何处理并发请求?



>如果我使用

R -e 'shiny::runApp("/app", host="0.0.0.0", port=8888)'

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

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

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

最新更新