Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo di fork in Ruby on Rails per la creazione di processi paralleli

Il problema è che un processo fork eredita alcune delle risorse del suo genitore, come i suoi descrittori di file. In particolare una di queste risorse condivise è la connessione MySQL. Quando il processo figlio termina l'invio dell'e-mail ed esce, chiude la connessione MySQL, che chiude la connessione dei processi padre.

Se continui su questo percorso (ed è irto di sottigliezze simili), allora devi fare qualcosa del genere:

# 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

Dovrai fare una cosa simile con servizi come memcached o mongodb se li usi.