Простите мое невежество, но, исходя из фона Django/Python, я вижу огромное преимущество наличия очереди Celery, работающей на более медленных процессах в фоновом режиме, в то время как веб-интерфейс обновляется как можно быстрее.Узел Работники JS - любая потребность в них?
Однако, с узлом, работающим асинхронно, используется прецедент для системы очереди значительно уменьшен?
Например:
1 - это сообщения пользователя что-то на сайте, 2 - сайт отвечает, то почту администратору.
В Django вы отправите почту администратора заданию, которое будет выполнено позже, а затем ответьте на запрос. Сельдерей отправляет почту в фоновом режиме.
В узле вы вызываете свою почтовую программу, а затем отвечаете на запрос. Затем почтовая программа отправляет обратный вызов, чтобы сказать DONE или нет, после чего пользователь уже просматривает ответ.
Так почему я должен использовать очередь с узлом? Я предполагаю, что когда все сложнее, чем это, кажется, что для простых вещей, таких как транзакционные письма, это необязательно.
Или я не понимаю, как это работает !?
Так что, если бы я хотел сделать что-то вроде вызова внешнего API для извлечения пользователей информация - например. сделайте некоторое обратное геокодирование с запросом на геокодер Google. Этот запрос не остановит мой процесс Node для следующего входящего запроса? Но если бы было много использования ЦП, это было бы ...? –
Вам нужно будет сравнить его, но да. Это примерно идея. Посмотрите здесь, чтобы получить представление о том, сколько можно сделать, ожидая операции io: http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html. Узел делает только 1 вещь за раз, поэтому, если это число хруст, он не может обслуживать запросы.Как только вы сделаете какой-либо io, вы освободите узел, чтобы уйти и сделать другие вещи. – AndyD
Перефразируя для (маргинальной) ясности: если ваше параллельное выполнение связано с большим ожиданием возврата запросов HTTP или файловой системы, то встроенный асинхронный ввод-вывод узла будет достаточным для вас параллелизмом. Если ваше параллельное выполнение включает в себя запуск больших вычислений локально (транскодирование видео, запуск симуляции), то однопоточная природа узла вытолкнет вас, и вам, возможно, придется открутить работу к работнику. – Dave