Tengo un Procfile así:La comunicación entre dos procesos en heroku (qué puerto usar)
web: bundle exec rails server -p $PORT
em: script/eventmachine
El proceso em
incendios hasta un EventMachine con start_server
(puerto ENV['PORT']
) y mi proceso de banda de vez en cuando necesita comunicarse con eso.
Mi pregunta es, ¿cómo sabe el proceso web con qué puerto comunicarse? Si entiendo heroku correctamente, te asigna un puerto aleatorio cuando se inicia el proceso (y puede cambiar si el ps se mata o se reinicia). ¡Gracias!
Sí, podría hacer una cola de fifo en redis o algo así, pero ¿está seguro de que se trata de procesos que no pueden comunicarse entre ellos? Los servidores/clientes de Eventmachine pueden comunicarse entre sí a través de tcpip estándar al igual que el proceso web acepta solicitudes de tcpip entrantes. Simplemente no sé en qué puerto conectarme. Gracias por la respuesta, la página de 12factores de Adam Wiggins es realmente interesante. –
Sí. Su proceso web tiene asignado un puerto para recibir solicitudes del mundo exterior; no hay otra comunicación entre procesos. Consulte esta pregunta similar aquí: http://stackoverflow.com/questions/9322599/tcp-socket-communication-between-processes-on-heroku-worker-dyno/9453432#9453432 –
Muy bien gracias, esto fue útil. Terminé usando un modelo de pub/sub con Redis que funcionó. Aunque no es durable, entonces puedo probar iron_mq después de esto y encuestarlo de eventmachine. ¡Gracias por la ayuda! Realmente lo aprecio. –