Re: [RailsFr] actualiser une page depuis le controller rails
Je pense que le probleme ici est clairement que tu as une mauvaise conception (no offense) de ce qu'est un serveur web. Deux choses en particulier 1) Un serveur web est une application qui ecoute un port en particulier et qui repond a des evenement http avec des connections dont la duree de vie est courte. 2) Un serveur web n'a pas pour but d'executer des taches de fond et de push les reponses a ses clients. Ce n'est pas important que ce ne soit "qu'une seule page". Ce n'est pas le job d'un serveur web. Ca prend un process en continu qui n'est pas disponible pour les autres. Et c'est super inefficace que d'occuper un thread web pour executer des taches qui n'ont rien a voir avec "repondre a une requette http". Une solution bien meilleure (mais pas forcement parfaite et y'en a probablement d'autres) serait que tu aies un demon qui execute la tache de fond, puis qui ecrive le resultat quelque part. Le "quelque part" est important car les choix technologiques seront radicalement differents. 1) tu peux ecrire en db, dans une table de resultats. Tes clients web pull le serveur a intervale regulier, et ton serveur web se contente de choisir le bon data a leur envoyer. Ils peuvent par exemple, envoyer la derniere date a laquelle ils ont pull le serveur et le serveur leur envoie tout ce qui a ete ajoute apres cette date. 2) tu peux ecrire dans une websocket. Chaque fois que ton demon fini une boucle, il envoie une notif via le serveur websocket (qui n'est PAS le serveur web mais un serveur dedie) qui broadcastera a tous les clients connectes. 3) Tu peux mixer 1 et 2. Tu notifies via websocket mais tu enregistres aussi les resultats en db, comme ca quand quelqu'un charge la page, il peut recuperer les infos des X dernieres boucles (et tu as un historique ce qui permet eventuellement par la suite de calculer d'autres stats sur ce data). Comme demon, tu peux soit te faire un petit script a la con et utiliser une gem pour "demoniser" le dit script. Y'a beaucoup de gems qui permettent de faire ca mais peu sont encore tres active. Tu peux aussi essayer de jouer avec activeJob / Sidekiq ... mais je le deconseille parce que, meme chose que pour le serveur web, si ton appli necessite beaucoup de jobs "spontanes", tu en paralyses un en permanence pour runner une boucle infinie. My 2 cents 2016-08-08 16:38 GMT+08:00 Francis MILHAU: > Bonjour > Ce n'est pas une application rails avec des indicateurs, c'est une > application rails une page en particuliers) qui interroge la base de > données à une fréquence déterminée (toutes les 10 minutes par exemple) et > qui en fonction du résultat met à jour les contrôles sur la page web > je vais essayer de jetter un coup d'oeil sur rails 5 > merci pour tes conseils > > Le 8 août 2016 à 10:36, Francis MILHAU a écrit : > >> Bonjour >> Ce n'est pas une application rails avec des indicateurs, c'est une >> application web (une page en particuliers) qui interroge la base de données >> à une fréquence déterminée (toutes les 10 minutes par exemple) et qui en >> fonction du résultat met à jour les contrôles sur la page web >> je vais essayer de jetter un coup d'oeil sur rails 5 >> merci pour tes conseils >> >> >> >> Le 6 août 2016 à 14:42, Simon Courtois a écrit : >> >>> Bonjour, >>> >>> Sur le principe avoir une méthode qui fait une boucle infinie sur le >>> serveur est une très mauvaise idée car cela block un process. Imaginons que >>> l'app soit hostée avec par exemple un maximum de 3 processes, il suffit >>> d'ouvrir la page 3 fois pour que le serveur ne puisse plus répondre à >>> personne. >>> >>> Il serait préférable d'opter pour une solution JS qui va effectivement >>> interroger le serveur de temps en temps pour une réponse à jour et qui sera >>> calculée rapidement à la demande. >>> >>> Maintenant si on veut se la jouer fancy on peut aussi penser à une >>> solution à base de websockets, Rails 5 sorti il y a peu propose une >>> solution clé-en-main appelée ActionCable. >>> >>> @ziburudebian Quel est le besoin fonctionnel exact ? C'est pour >>> l'application avec les indicateurs, etc ? >>> >>> Bonne journée, >>> >>> Simon Courtois >>> >>> On 6 August 2016 at 09:33:34, Julien Grillot (julien.gril...@gmail.com) >>> wrote: >>> >>> Bonjour, >>> >>> Le plus simple qui me vienne en tête est que ce soit JavaScript qui >>> boucle toutes les minutes avec un setInterval pour faire un appel XHR >>> (ajax) qui récupère ce qui est calculé côté serveur. >>> >>> Le 6 août 2016 à 00:16, ziburudebian a écrit : >>> > bonjour >>> > >>> > je voudrais actualiser ma page web depuis ma fonction ruby : >>> > sur la bouton 'start' de ma page web (slim), j'appelle une fonction >>> > (runexecution) de mon controller : >>> > cette fonction fait une boucle infinie toutes les minutes et doit >>> > réactualiser le contenu de ma page (input par exemple) en fonction de >>> > resultat générées par ma fonction runexecution
Re: [RailsFr] actualiser une page depuis le controller rails
Bonjour Ce n'est pas une application rails avec des indicateurs, c'est une application rails une page en particuliers) qui interroge la base de données à une fréquence déterminée (toutes les 10 minutes par exemple) et qui en fonction du résultat met à jour les contrôles sur la page web je vais essayer de jetter un coup d'oeil sur rails 5 merci pour tes conseils Le 8 août 2016 à 10:36, Francis MILHAUa écrit : > Bonjour > Ce n'est pas une application rails avec des indicateurs, c'est une > application web (une page en particuliers) qui interroge la base de données > à une fréquence déterminée (toutes les 10 minutes par exemple) et qui en > fonction du résultat met à jour les contrôles sur la page web > je vais essayer de jetter un coup d'oeil sur rails 5 > merci pour tes conseils > > > > Le 6 août 2016 à 14:42, Simon Courtois a écrit : > >> Bonjour, >> >> Sur le principe avoir une méthode qui fait une boucle infinie sur le >> serveur est une très mauvaise idée car cela block un process. Imaginons que >> l'app soit hostée avec par exemple un maximum de 3 processes, il suffit >> d'ouvrir la page 3 fois pour que le serveur ne puisse plus répondre à >> personne. >> >> Il serait préférable d'opter pour une solution JS qui va effectivement >> interroger le serveur de temps en temps pour une réponse à jour et qui sera >> calculée rapidement à la demande. >> >> Maintenant si on veut se la jouer fancy on peut aussi penser à une >> solution à base de websockets, Rails 5 sorti il y a peu propose une >> solution clé-en-main appelée ActionCable. >> >> @ziburudebian Quel est le besoin fonctionnel exact ? C'est pour >> l'application avec les indicateurs, etc ? >> >> Bonne journée, >> >> Simon Courtois >> >> On 6 August 2016 at 09:33:34, Julien Grillot (julien.gril...@gmail.com) >> wrote: >> >> Bonjour, >> >> Le plus simple qui me vienne en tête est que ce soit JavaScript qui >> boucle toutes les minutes avec un setInterval pour faire un appel XHR >> (ajax) qui récupère ce qui est calculé côté serveur. >> >> Le 6 août 2016 à 00:16, ziburudebian a écrit : >> > bonjour >> > >> > je voudrais actualiser ma page web depuis ma fonction ruby : >> > sur la bouton 'start' de ma page web (slim), j'appelle une fonction >> > (runexecution) de mon controller : >> > cette fonction fait une boucle infinie toutes les minutes et doit >> > réactualiser le contenu de ma page (input par exemple) en fonction de >> > resultat générées par ma fonction runexecution : >> > comment faire ? un render , ...auytre ideés ? >> > >> > My config: >> > Linux debian 7 >> > ruby 2.1 >> > Rails 4.17 >> > mysql 5 >> > >> > -- >> > -- >> > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" >> de >> > Google Groups. >> > Pour transmettre des messages à ce groupe, envoyez un e-mail à >> l'adresse >> > railsfrance@googlegroups.com >> > Pour résilier votre abonnement envoyez un e-mail à l'adresse >> > railsfrance-unsubscr...@googlegroups.com >> > --- >> > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes >> > "Railsfrance". >> > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le >> > concernant, envoyez un e-mail à l'adresse >> > railsfrance+unsubscr...@googlegroups.com. >> > Pour obtenir davantage d'options, consultez la page >> > https://groups.google.com/d/optout. >> >> -- >> -- >> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" >> de Google Groups. >> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse >> railsfrance@googlegroups.com >> Pour résilier votre abonnement envoyez un e-mail à l'adresse >> railsfrance-unsubscr...@googlegroups.com >> --- >> Vous recevez ce message, car vous êtes abonné au groupe Google >> Groupes Railsfrance. >> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le >> concernant, envoyez un e-mail à l'adresse railsfrance+unsubscribe@google >> groups.com. >> Pour plus d'options, visitez le site https://groups.google.com/d/optout >> . >> >> -- >> -- >> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" >> de Google Groups. >> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse >> railsfrance@googlegroups.com >> Pour résilier votre abonnement envoyez un e-mail à l'adresse >> railsfrance-unsubscr...@googlegroups.com >> --- >> Vous recevez ce message, car vous êtes abonné à un sujet dans le groupe >> Google Groupes "Railsfrance". >> Pour vous désabonner de ce sujet, visitez le site >> https://groups.google.com/d/topic/railsfrance/HtOIj8uJg_E/unsubscribe. >> Pour vous désabonner de ce groupe et de tous ses sujets, envoyez un >> e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com. >> Pour obtenir davantage d'options, consultez la page >> https://groups.google.com/d/optout. >> > > -- -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à
Re: [RailsFr] actualiser une page depuis le controller rails
Bonjour, Sur le principe avoir une méthode qui fait une boucle infinie sur le serveur est une très mauvaise idée car cela block un process. Imaginons que l'app soit hostée avec par exemple un maximum de 3 processes, il suffit d'ouvrir la page 3 fois pour que le serveur ne puisse plus répondre à personne. Il serait préférable d'opter pour une solution JS qui va effectivement interroger le serveur de temps en temps pour une réponse à jour et qui sera calculée rapidement à la demande. Maintenant si on veut se la jouer fancy on peut aussi penser à une solution à base de websockets, Rails 5 sorti il y a peu propose une solution clé-en-main appelée ActionCable. @ziburudebian Quel est le besoin fonctionnel exact ? C'est pour l'application avec les indicateurs, etc ? Bonne journée, Simon Courtois On 6 August 2016 at 09:33:34, Julien Grillot (julien.gril...@gmail.com) wrote: Bonjour, Le plus simple qui me vienne en tête est que ce soit JavaScript qui boucle toutes les minutes avec un setInterval pour faire un appel XHR (ajax) qui récupère ce qui est calculé côté serveur. Le 6 août 2016 à 00:16, ziburudebiana écrit : > bonjour > > je voudrais actualiser ma page web depuis ma fonction ruby : > sur la bouton 'start' de ma page web (slim), j'appelle une fonction > (runexecution) de mon controller : > cette fonction fait une boucle infinie toutes les minutes et doit > réactualiser le contenu de ma page (input par exemple) en fonction de > resultat générées par ma fonction runexecution : > comment faire ? un render , ...auytre ideés ? > > My config: > Linux debian 7 > ruby 2.1 > Rails 4.17 > mysql 5 > > -- > -- > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de > Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > railsfrance@googlegroups.com > Pour résilier votre abonnement envoyez un e-mail à l'adresse > railsfrance-unsubscr...@googlegroups.com > --- > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > "Railsfrance". > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > concernant, envoyez un e-mail à l'adresse > railsfrance+unsubscr...@googlegroups.com. > Pour obtenir davantage d'options, consultez la page > https://groups.google.com/d/optout. -- -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse railsfrance@googlegroups.com Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance-unsubscr...@googlegroups.com --- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com. Pour plus d'options, visitez le site https://groups.google.com/d/optout . -- -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse railsfrance@googlegroups.com Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance-unsubscr...@googlegroups.com --- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com. Pour plus d'options, visitez le site https://groups.google.com/d/optout .
Re: [RailsFr] actualiser une page depuis le controller rails
Bonjour, Le plus simple qui me vienne en tête est que ce soit JavaScript qui boucle toutes les minutes avec un setInterval pour faire un appel XHR (ajax) qui récupère ce qui est calculé côté serveur. Le 6 août 2016 à 00:16, ziburudebiana écrit : > bonjour > > je voudrais actualiser ma page web depuis ma fonction ruby : > sur la bouton 'start' de ma page web (slim), j'appelle une fonction > (runexecution) de mon controller : > cette fonction fait une boucle infinie toutes les minutes et doit > réactualiser le contenu de ma page (input par exemple) en fonction de > resultat générées par ma fonction runexecution : > comment faire ? un render , ...auytre ideés ? > > My config: > Linux debian 7 > ruby 2.1 > Rails 4.17 > mysql 5 > > -- > -- > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de > Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > railsfrance@googlegroups.com > Pour résilier votre abonnement envoyez un e-mail à l'adresse > railsfrance-unsubscr...@googlegroups.com > --- > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > "Railsfrance". > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > concernant, envoyez un e-mail à l'adresse > railsfrance+unsubscr...@googlegroups.com. > Pour obtenir davantage d'options, consultez la page > https://groups.google.com/d/optout. -- -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse railsfrance@googlegroups.com Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance-unsubscr...@googlegroups.com --- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com. Pour plus d'options, visitez le site https://groups.google.com/d/optout .