2010-10-19 4 views
3

question courte et simple:Rails contrôleurs, sûr pour fourcher un bloc, puis revenir?

fork { something_that_takes_a_few_seconds_and_doesnt_concern_the_user } 

respond_to ... 

Y at-il raison de ne pas faire ce genre de chose dans une application rails? En PHP, nous utilisons actuellement des systèmes de files d'attente externes tels que beanstalk ou SQS d'Amazon couplé à un gestionnaire de tâches asynchrone qui extrait les éléments de la file d'attente pour s'exécuter en arrière-plan. Une fourchette simple conviendrait mieux dans de nombreux cas, selon la complexité de la tâche.

Répondre

1

Oui, si vous recevez trop de demandes ou que ce processus prend plus de temps que prévu, vous pouvez facilement faire exploser votre processeur et votre mémoire et l'application Rails va commencer à augmenter les erreurs de mémoire insuffisante. Il existe de nombreuses solutions simples d'arrière-plan pour les applications Rails, comme Resque, et vous pouvez bénéficier grandement d'une telle solution plutôt que de forking, comme cela arriverait toujours de votre environnement webapp et même si quelque chose de désagréable se produisait serait confiné à la machine de travail (et non à votre serveur d'application). En outre, j'ai vu beaucoup de gens dire qu'une fois que vous passez à un mot virtualisé, la fragmentation de la mémoire (due à la multiplication et à la destruction de nombreux processus) peut avoir des conséquences et vous faire ralentir.

Questions connexes