Node.js与Python

Gen*_* S. 11 python web-services node.js

我正在重写我的服务器并决定使用Node.js和Python.

我更喜欢Javascript(因为我非常精通它)但是这篇文章让我停下来.我很好奇是否有人遇到过任何问题但是,我很好奇是否有任何与平台相关的优点.

具体来说,他们中的任何一个都不支持/限制/ excel-at

  • mySQL调用
  • imageMajik互动
  • 调用系统进行文件系统操作
  • 通过WGET/Curl调用其他任何内容
  • 您可以想到正常的CGI流程必须处理.

我不想开始讨论PHP或.Net的优点,我做出了明确的决定,转而使用Python或Node.js并完全解决了Node.js,直到我阅读上面的文章,所以,实际上,我只是在寻找人们对这两种工具所具有的具体问题/美德.

提前致谢.

Cod*_*aos 18

这里有两个问题:

  1. 语言的选择.如果你喜欢python或javascript,你需要自己决定,哪个提供你想要的库.我无法帮助你做出决定的那一部分.
  2. IO模型的选择.

与文章所暗示的不同,单线程非阻塞IO模型原则上并不坏.我个人非常喜欢这个模型,因为它消除了多线程的复杂性,同时仍然在共享内存模型上工作.

此模型的另一个优点是,因为每个请求不需要一个线程,所以可以有许多并发打开请求.

一个缺点是,如果没有语言支持,您需要显式地对continuation进行排队,而不是以简单的命令式方式编写代码.C#5使用async-await功能来解决这个问题,如果node.js将来提供类似的功能,我也不会感到惊讶.

本文主要讨论第二个缺点:如果阻塞主线程,则阻塞整个服务器.

他的一个例子就是滥用:他实现了一个忙碌的等待,而不是订阅一个事件.通过正确的编程,这根本不应该发生.

另一个例子有更多要点:如果你有CPU密集型计算,最好不要在主线程上进行.解决这个问题的简单方法是旋转一个工作线程,它可以在不触及主线程使用的内存的情况下进行计算.一旦完成它就会在主线程上调用回调.不确定node.js是否提供此功能.但由于许多服务器应用程序不受CPU限制,因此这通常不是问题.

一般来说,该文章的质量非常低,并且更多地讲述了作者而不是node.js.你不应该让它影响你的决定.

  • 我认为这篇文章的主要观点是node.js的主要卖点,即它的异步事件驱动系统,不会自动使一个不那么专业的程序员能够编写一个声称的快速系统.可以想象,一个无知的程序员在主线程中进行阻塞调用,这将阻止整个服务器导致每个人的速度减慢,而不仅仅是当前的请求处理程序. (5认同)