Возможно ли запустить несколько процессов на динамометрическом стенде Heroku?

Я знаю об ограничениях памяти платформы Heroku, и я знаю, что гораздо лучше масштабировать приложение, разделив его на веб- и рабочие динамометры. Тем не менее, я все еще хотел бы запускать асинхронные задачи вместе с веб-процессом для целей тестирования. Динозавры стоят дорого, и я хотел бы создать прототип на бесплатном экземпляре, который предоставляет Heroku.

Есть ли проблемы с созданием нового задания как процесса или подпроцесса в том же dyno, что и веб-процесс?


person okw    schedule 01.07.2012    source источник


Ответы (1)


В более новом стеке Cedar нет проблем с созданием нескольких процессов. Каждый dyno является виртуальной машиной и не имеет особых ограничений, кроме использования памяти и процессора (я думаю, около 512 МБ памяти и 1 ядро ​​​​ЦП). Следование более новым инструкциям по установке для некоторых стеков, таких как Python, приведет к конфигурации с несколькими процессами (веб-сервер) из коробки.

Программное обеспечение, установленное на веб-динозаврах, может различаться в зависимости от того, какой пакет сборки вы используете; если вашим подпроцессам требуется специальное программное обеспечение, вам, возможно, придется либо связать его с вашим приложением, либо (лучше) свернуть свой собственный пакет сборки.

На этом этапе я обычно напоминаю вам, что запуск асинхронных задач на рабочих дино вместо веб-динамических, с надлежащей системой очереди задач, настоятельно рекомендуется, но похоже, что вы уже это знаете. Имейте в виду, что учетные записи только с одним веб-дино (обычно это означает «бесплатные» учетные записи) будут останавливать этот динамометр через час или около того, если не будут получены какие-либо веб-запросы, и что любые фоновые процессы, запущенные на динамометре в это время время обязательно будет убито. Это ограничение не распространяется на учетные записи с несколькими веб-динамиками.

person Andrew Gorcester    schedule 01.07.2012
comment
Мой обходной путь для динамического бездействия заключается в том, чтобы один из веб-процессов атомарно блокировал объект базы данных, затем проверял, работает ли рабочий процесс, и если нет, запускал его. - person okw; 01.07.2012