Dans Ruby, j'ai une action de contrôleur qui lance immédiatement une tâche de calcul intensif qui prend plusieurs secondes. Je souhaite que le client interroge mon serveur et obtienne des mises à jour de statut.Où stocker des données temporaires dans des rails
dans mon contrôleur:
def complex_task
Thread.new do
loop do
one_part_of_the_computationally_intensive_task
# Note how much progress we've made, in case the client asks.
save_progress
end
end
# returns to client straightaway, but task continues in background.
end
def check_status
# Retrieve state in here.
get_progress
end
Notez comment check_status
doit tirer l'état qui est stocké par le thread séparé.
Comment puis-je écrire les fonctions save_progress
et get_progress
? Où puis-je stocker l'état? Il semble que ce n'est pas une bonne idée de le stocker dans session
, puisque cela est envoyé au client, mais où puis-je le stocker?
(lié à this question, mais beaucoup plus général. J'attends des réponses tout à fait différentes.)