Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation de fork dans Ruby on Rails pour créer un processus parallèle

Le problème est qu'un processus dérivé hérite de certaines des ressources de son parent, telles que ses descripteurs de fichiers. En particulier, une de ces ressources partagées est la connexion MySQL. Lorsque le processus enfant termine son envoi d'e-mails et quitte, il ferme la connexion MySQL, ce qui ferme la connexion des processus parents.

Si vous continuez sur cette voie (et qu'elle est truffée de subtilités similaires), vous devez faire quelque chose comme ceci :

# Clear existing connections before forking to ensure they do not get inherited.
::ActiveRecord::Base.clear_all_connections! 

fork do
  # Establish a new connection for each fork.
  ::ActiveRecord::Base.establish_connection 
  
  # The rest of the code for each fork...
end

Vous devrez faire la même chose avec des services comme memcached ou mongodb si vous les utilisez.