Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fork in Ruby on Rails zum Erstellen paralleler Prozesse verwenden

Das Problem besteht darin, dass ein gegabelter Prozess einige der Ressourcen seines übergeordneten Prozesses erbt, beispielsweise seine Dateideskriptoren. Eine solche gemeinsam genutzte Ressource ist insbesondere die MySQL-Verbindung. Wenn der untergeordnete Prozess seine E-Mail-Versendung beendet und sich beendet, schließt er die MySQL-Verbindung, wodurch die Verbindung des übergeordneten Prozesses geschlossen wird.

Wenn Sie diesen Weg weitergehen (und er ist voller ähnlicher Feinheiten), dann müssen Sie etwa so vorgehen:

# 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

Ähnliches müssen Sie mit Diensten wie memcached oder mongodb tun, wenn Sie diese verwenden.