Блестящий: как он обрабатывает параллельные запросы? - PullRequest
0 голосов
/ 11 февраля 2020

Если я запускаю приложение Shiny, используя

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

, как оно обрабатывает параллельные запросы / какова его рабочая модель?

Каждый запрос обрабатывается в отдельном потоке, процесс, он использует модель event-l oop или даже обрабатывает их по одному?

1 Ответ

1 голос
/ 11 февраля 2020
  1. Поскольку R однопоточный, как shiny, и он построен поверх node
  2. Все сеансы подключены через websocket к этому потоку
  3. Традиционно блестящее реактивное программирование с использованием стандарта event loop model
  4. Существует концепция flush cycle, которая выполняет следующее: receiving, updating, reacting, and sending, поэтому при обновлении reactives или observers невозможно обновить другие входы. Это сделано, чтобы избежать условий гонки
  5. Вы можете воспользоваться преимуществами async программирования в shiny, используя обещания пакет
  6. Если вы хотите интегрировать некоторые из более расширенные библиотеки js, с которыми можно работать V8 пакет
  7. Вы также можете интегрировать react.js с shiny
...