la persistance des données lorsque les matrices de processus de travail, comment?

StackOverflow https://stackoverflow.com/questions/4172381

  •  09-10-2019
  •  | 
  •  

Question

Je les processus de travail qui a besoin de données recueillies / calculées comme arguments au démarrage. Il est ensuite nécessaire sur redémarrages aussi bien. Où dois-je mettre le code d'initialisation? A l'intérieur des superviseurs par init? Ou à l'intérieur des modules start_link ou initialisation? Sont en Erlang-il des meilleures pratiques en matière de cela?

Était-ce utile?

La solution

Si le composant a gen_server état critique, ou d'un état qui ne peut être recalculé / re cueillies, j'évite généralement garder l'état dans gen_server lui-même. Je choisis plutôt de maintenir l'état dans une table processus / externe ets. Si vous allez par cette approche, assurez-vous que la table de ÉTS soit créée par un, par exemple., Le processus d'application processus de externel (que vous êtes sûr ne mourras pas) -OU- créer la table ets dans la méthode d'initialisation du gen_server et utiliser les « ets: give_away / 3 » méthode pour la passer à un processus externe (bien sûr, vous devez vérifier si la table est déjà créée dans la méthode d'initialisation du gen_server) .. Sinon la table ets sera détruite lorsque les matrices de processus ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top