Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando fork em Ruby on Rails para criar processos paralelos


O problema é que um processo bifurcado herda alguns dos recursos de seu pai, como seus descritores de arquivo. Em particular, um desses recursos compartilhados é a conexão MySQL. Quando o processo filho termina seu envio de e-mail e sai, ele fecha a conexão MySQL, que fecha a conexão dos processos pai.

Se você continuar nesse caminho (e é repleto de sutilezas semelhantes), precisará fazer algo assim:
# 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

Você terá que fazer algo semelhante com serviços como memcached ou mongodb se os usar.