2017-06-21 3 views
0

Je suis débutant à R plombier qui est un serveur REST qui peut exposer la fonction R comme API de repos.Questions de base sur R plombier

Je pose des questions suivantes:

  1. Est-serveur plombier R assez fort pour être adopté dans un environnement de production?
  2. La fonction, qui est exposée comme api de repos, Si la fonction est complexe et prend du temps de la logique, comment régler le temps de choses à garder la connexion en vie?
  3. Combien de demandes simultanées R prend-il en charge?

Répondre

3

(Bias: Je suis l'auteur du plombier)

  1. Est-serveur plombier R assez fort pour être adopté dans un environnement de production?

Plombier est encore jeune, mais je connais plusieurs personnes à l'aide de plombier en cours de production. Voici un writeup sur un tel exemple: https://www.mango-solutions.com/blog/production-r-at-ons

  1. La fonction, qui est exposée comme repos api, si la fonction ne logique complexe et prend beaucoup de temps, comment régler le temps choses à garder la connexion en vie?

Il n'y a pas actuellement un moyen de forcer un délai d'attente sur un point final particulier. Il appartiendrait à l'auteur de l'API de s'assurer que les fonctions étaient suffisamment légères pour pouvoir revenir dans un délai raisonnable. Sinon, vous voudriez démarrer un processus séparé pour gérer une tâche de longue durée afin de pouvoir répondre rapidement à la demande entrante.

  1. Combien de demandes simultanées R prend-il en charge?

R dans un seul thread, donc à un moment donné, il ne peut être fait une chose (sans contournements spéciaux). Cela vaut aussi pour Plumber. Votre API Plumber s'exécutant dans un seul processus R peut uniquement exécuter une fonction/point de terminaison à un moment donné. Les autres demandes entrantes seront mises en file d'attente jusqu'à ce que le processus R soit prêt à commencer à les traiter.

La solution consiste à exécuter plusieurs processus R en parallèle et à équilibrer la charge du trafic entrant vers ces processus. Une autre discussion: https://plumber.trestletech.com/docs/hosting/ et une solution: https://plumber.trestletech.com/docs/docker-advanced/

+0

Merci @Jeff Allen pour la bonne réponse. Maintenant, j'ai une compréhension plus claire du fonctionnement du plombier. Pour # 3, il semble que la solution utilise l'équilibre de charge avec les instances de plombier multiples Nginx +. Dites, 10 instances, il semble qu'il y a 10 demandes seront traitées simultanément, et d'autres demandes seront mises en file d'attente – Tom