Как создавать и управлять рабочими процессами в NodeJS? - PullRequest
4 голосов
/ 20 января 2012

Например, если пользователь запрашивает обработку некоторого аудиофайла, то, конечно, nodejs не может выполнять интенсивную обработку, поэтому ему следует перегрузить его в рабочий процесс.

Возможно, этим работникам нужнобыть в состоянии публиковать / подчиняться событиям, возрождаться, когда они умирают, и очередь должна иметь возможность загружать баланс, поддерживать кэш и поддерживать работу.Я видел 0MQ и другие подобные ему, но я не уверен, как бы я интегрировал его в веб-приложение ...

Каков стандартный отраслевой способ создания и управления этими рабочими процессами?И какие инструменты используются?

Редактировать: еще одна вещь: скажем, обработка аудио занимает много времени, а время запроса истекло.Есть ли способ обойти это, кроме увеличения тайм-аута?

Редактировать 2: Под рабочими я имею в виду рабочих динамов Heroku - как они работают?

1 Ответ

1 голос
/ 20 января 2012

Лично я бы, вероятно, сделал что-то вроде добавления задач в базу данных Redis. Затем другой процесс (возможно, написанный на другом языке, если он очень трудоемкий) подписывается на этот ключ в базе данных redis и запускает задачи, которые к нему добавляются. Он может даже сам управлять некоторыми рабочими потоками.

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

...