Допустим, у меня есть следующие процессы, объявленным в моем PROCFILEBest Practices для запуска сельдерей на Heroku
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-брокер.
Я пробовал альтернативу running multiple processes on a single dyno, но он не работает надежно и в любом случае не является чем-то, что я хотел бы использовать в производстве.
Я нахожу, что стоимость запуска всего этого немного непомерно высока, особенно когда я думаю, что я мог бы объединить некоторые процессы на одном динамо. Возможно, объединение планировщика с мониторингом или запуск планировщика и рабочего вместе.
К этому относится только тот факт, что Heroku открыт только 80 и 443 портами, и нет возможности запускать службы на нескольких портах на одном и том же динамике.
Что было бы хорошей стратегией для оптимизации процесса и использования dyno?
В качестве альтернативы, как идти о мониторинге задач сельдерея на героку, если работа celerycam добавляет еще один dyno к вашей стоимости?
(отказ от ответственности: это не решение). Я бы рекомендовал взглянуть на решения, не связанные с сельдереем, которые может предложить раздел дополнений Heroku, а также их основной планировщик. Сельдерей * чувствует * как всеобъемлющее решение, но ИМХО это боль, чтобы справиться. Посмотрите также на SQS. Вы можете написать собственное решение, которое работает на одном или нескольких динамиках менее чем на 30 строк кода, используя SQS (http://boto.readthedocs.org/en/latest/ref/sqs.html делает SQS ультрапростым) , – orokusaki