加快这个(基本)node.js服务器

我有一个(愚蠢的)node.js服务器,这里的唯一目的是调用每个请求传递的数据的函数,并回答该函数的结果。 这是我使用的代码:

var pageDown = require('./PageDown/Markdown.Sanitizer').getSanitizingConverter(), http = require('http'); http.createServer(function (req, res) { var data = ""; res.writeHead(200, {'Content-Type': 'text/plain'}); req.on('data', function (chunk) { data += chunk; }); req.on('end', function() { res.end(pageDown.makeHtml(data)); }); }).listen(1337, '127.0.0.1'); console.log('HServer running at http://127.0.0.1:1337/'); 

我用下面的代码从Python使用这个服务器(atm我只是基准,所以这只是一个压力testing):

 #!/usr/bin/env python # -*- coding: utf-8 -*- import requests for i in range(1, 100000): r = requests.post('http://localhost:1337/', data="lol") print i print "I'm done :')" 

我的问题是,这样做的事情是缓慢的。 我有一个大的数据库,需要处理这个JavaScript函数,我正在寻找方法,使上述过程更快。 所以build议欢迎!

如果你所做的只是调用节点进程来清理你的HTML,那为什么不用python呢? 我假设你指向的降价转换器是这样的: http : //code.google.com/p/pagedown/source/browse/Markdown.Sanitizer.js 。 如果是这样的话,为什么不把它转换成python(或者find类似的python代码),并在处理它。 做一个networking调用来简单地运行这个过程似乎是非常困难的,因为它比在python中执行所有操作要慢得多。 以下是我能find的一些python markdown工具: http : //packages.python.org/Markdown/,https : //github.com/trentm/python-markdown2 。

你没有使用node.js的asynchronousdevise。 事实上,你在做什么,恕我直言,是反模式。

如果您必须在node.js中进行计算,那么服务器代码是正确的。 但要利用asynchronous体系结构您应该将许多node.js服务器实例放在负载平衡器后面。 你甚至可以在一台机器上运行这个实例来利用多个内核。

并且为了使客户能够从多个实例中获利,你也应该asynchronous地进行你的post调用。 要做到这一点,而不是请求使用一些asynchronousHTTP客户端,如http://www.tornadoweb.org/documentation/httpclient.html

它允许你并行地在node.js实例中进行计算。