Можете ли вы запустить рабочий процесс Heroku с Node & Express - PullRequest
1 голос
/ 02 мая 2020

Я пытаюсь запустить рабочий процесс на Heroku без веб-процесса.

Это приложение с небольшим узлом express. Но это не работает, если у меня не запущен веб-процесс.

У меня есть Procfile с

worker node server.js

Но я получаю эту ошибку

heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/

Я хочу запустить его как рабочий процесс, поскольку рабочие не ограничены тайм-аутом 30 с и должны быть более эффективными. Эта конечная точка предназначена только для обработки 1 интенсивной задачи отдельно от нашего основного API, поэтому имеет смысл быть настроенной в качестве рабочего.

В соответствии с этим

https://help.heroku.com/PFSOIDTR/why-am-i-seeing-h12-request-timeouts-high-response-times-in-my-app

Вопрос 2: делегировал ли я долгосрочные задачи в качестве фоновых заданий? Если вы не можете заставить свой код работать быстрее и вам просто нужно больше времени (т. Е. Обрабатывать изображения, анализировать документы, выполнять вызовы API и т. Д. c), вы можете запускать их в качестве фоновых заданий на рабочих столах. Рабочие динамы не сталкиваются с тем же 30-секундным тайм-аутом, что и веб-динамы, что делает их идеальными для подъема тяжестей.

Все проблемы, которые я обнаруживаю при исправлении этой шкалы, говорят о масштабе в сети: 1

Так что это заставляет меня поверить, что express не может работать только как рабочий и должен быть веб-процессом?

1 Ответ

1 голос
/ 02 мая 2020

Согласно этой статье на веб-сайте Heroku, worker dynos не предоставляют никаких портов. Если вы хотите, чтобы конечная точка была доступна через Интернет, вам нужно будет использовать web dyno. Тем не менее, вы можете достичь того, чего хотите, общаясь через веб-интерфейс и рабочие док-станции с протоколом очереди , как объяснено в этом ответе Райана Дейгла .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...