1

Je dois effectuer une tâche toutes les 5 secondes, mais seulement lorsque les utilisateurs utilisent l'application. Pour l'instant, j'utilise cron qui fonctionne toutes les minutes et active une tâche qui se répète toutes les 5 secondes avec des interruptions, pendant une minute. Cependant, cela fonctionne également lorsque l'application n'est pas utilisée.Tâche Smart Thread en arrière-plan dans Ruby on Rails?

Y at-il une gemme qui fera ce genre de chose?

Répondre

0

Si vous utilisez cron, ne pourriez-vous pas simplement utiliser des choses particulières à l'OS pour le faire fonctionner? Comme dans, utilisez le système de fichiers sous-jacent ou OS, ne comptez pas sur Rails. Par exemple, votre application Rails peut toucher un fichier chaque fois qu'un utilisateur accède au site, ce que le travail cron vérifierait avant d'exécuter sa tâche. Il peut également vérifier le ctime/mtime du fichier et le supprimer si le fichier est trop ancien.

Dans ce cas, vous n'avez pas besoin d'une gemme ... il vous suffit de rendre votre tâche cron plus intelligente.

+0

Merci. En fait, la solution, telle que je l'ai vu, consistait à enregistrer la dernière date d'exécution sur une variable globale de l'application et à vérifier chaque hit si plus de 5 secondes se sont écoulées depuis la dernière exécution. Je voulais juste savoir s'il y a un code écrit pour effectuer une tâche comme ça. – elado