learn deploy app django heroku celery amqp

django - deploy - Las mejores prácticas para ejecutar el apio en heroku



learn heroku (1)

Puede ver el uso de eventlet para escalar su grupo de trabajadores sin aumentar el número de dynos.

Lamentablemente, los trabajadores basados ​​en prueba no admiten programación / tiempos (-B cambio). Por lo tanto, aún necesitará un proceso adicional para el programador.

En cuanto a la monitorización, sugiero simplemente ejecutar el monitor desde su máquina local u otro servidor de forma ad-hoc.

Digamos que tengo los siguientes procesos declarados en mi Procfile

web: newrelic-admin run-program python manage.py run_gunicorn -b 0.0.0.0:$PORT -w 9 -k gevent --max-requests 250 --preload --timeout 240 scheduler: python manage.py celery worker -B -E --maxtasksperchild=1000 worker: python manage.py celery worker -E --maxtasksperchild=1000 celerymon: python manage.py celerymon -B 0.0.0.0 -P $PORT

Básicamente, tengo que ejecutar algunos dinnos de mi proceso web principal. Ejecuta un programador. Ejecuta algunos trabajadores. Monitorear el apio. Por separado, use un intermediario AMQP alojado.

He intentado la alternativa de ejecutar múltiples procesos en un solo banco de pruebas, pero parece que no funciona de manera confiable y, de todos modos, no es algo que me gustaría usar en la producción.

Considero que el costo de ejecutar todo esto es un poco prohibitivo, especialmente cuando creo que puedo agrupar algunos procesos en un solo banco de pruebas. Quizás combinando el programador con la supervisión o ejecutando el planificador y el trabajador juntos.

A esto se agrega el hecho de que solo Heroku expone 80 y 443 puertos y no hay forma de ejecutar servicios en múltiples puertos en el mismo banco de pruebas.

¿Cuál sería una buena estrategia para optimizar el proceso y el uso de dyno?

De forma alternativa, ¿cómo se hace para monitorear las tareas de apio en heroku si la aplicación de apiocamilla agrega otro dinamómetro a su costo?