Предположим, что у меня есть следующие процессы, объявленные в моем 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
Мне в основном нужно запустить несколько динамиков моего основного веб-процесса. Запустите планировщик. Запустите несколько рабочих. Монитор сельдерея. Отдельно используйте размещенный AMKP-брокер.
Я попробовал альтернативу запускать несколько процессов на одном динамике, но он, похоже, не работает надежно, и в любом случае это не то, что я хотели бы использовать в производстве.
Я считаю, что затраты на выполнение всего этого немного непомерно высокие, особенно когда я думаю, что я мог бы объединить некоторые процессы на одном дино. Возможно, объединение планировщика с мониторингом или запуск планировщика и рабочего вместе.
К этому добавляется тот факт, что Heroku открыт только 80 и 443 портами, и нет возможности запускать службы на нескольких портах на одном и том же dyno.
Что было бы хорошей стратегией для оптимизации процесса и использования dyno?
В качестве альтернативы, как идти о мониторинге задач сельдерея на героку, если запущен celerycam добавляет еще один dyno к вашей стоимости?