Подтвердить что ты не робот

Node.js vs Python

Я переписываю свой сервер и решаю между использованием Node.js и Python.

Я предпочитаю Javascript (так как я очень хорошо разбираюсь в нем), но эта статья дает мне паузу. Мне любопытно, есть ли у кого-то проблемы, но также, мне любопытно, есть ли какие-либо достоинства, связанные с платформой, друг с другом.

В частности, сделайте одно из них: not-support/limit/excel-at

  • mySQL вызывает
  • imageMajik взаимодействие
  • вызывает систему для манипулирования файловой системой.
  • вызовы в сеть через WGET/Curl что-нибудь еще
  • вы можете думать о том, что нормальные процессы CGI должны иметь дело.

Я не хочу начинать рассуждать о достоинствах PHP или .Net, я принял окончательное решение перейти на Python или Node.js и был полностью установлен на Node.js, пока Я прочитал вышеприведенную статью, поэтому, действительно, я просто ищу конкретные проблемы/добродетели, которые были у людей с этими двумя инструментами.

Спасибо заранее.

4b9b3361

Ответ 1

Здесь есть две проблемы:

  • Выбор языка. Вам нужно будет решить для себя, если вы предпочитаете python или javascript, и который предлагает библиотеки, которые вы хотите. Я не могу помочь вам с этой частью решения.
  • Выбор модели ввода-вывода.

В отличие от того, что в статье предлагается, в принципе, неплохая однопоточная неблокирующая модель ввода-вывода. Лично мне эта модель очень нравится, так как она устраняет сложности многопоточности, все еще работая над моделью общей памяти.

Еще одно преимущество этой модели состоит в том, что, поскольку вам не нужен поток для каждого запроса, вы можете иметь много одновременных открытых запросов.

Один из недостатков заключается в том, что без поддержки языка вам необходимо явно ограничивать очереди, вместо того чтобы писать код простым императивным образом. С# 5 атакует эту проблему своей функцией асинхронного ожидания, и я не удивлюсь, если node.js предложит нечто подобное в будущем.

В основном речь идет о втором недостатке: если вы блокируете основной поток, вы блокируете весь сервер.

Один из его примеров - просто злоупотребление: он выполняет оживленное ожидание, а не подписывается на событие. При правильном программировании это просто не должно происходить.

В другом примере больше точки: если вы используете вычисления с интенсивным вычислением, лучше не делать их в основном потоке. Простое решение этого - вращение рабочего потока, которое делает расчет без касания памяти, используемой основным потоком. И как только это делается, он вызывает обратный вызов в основном потоке. Не уверен, что node.js предлагает это, хотя. Но поскольку многие серверные приложения не связаны с ЦП, это часто не является проблемой вообще.

В целом эта статья очень низкое качество и больше рассказывает об авторе, чем о node.js. Вы не должны позволять этому влиять на ваше решение.