我目前使用Django在Apache(mod_wsgi)上开发我的应用程序。我最喜欢的事情之一是使用JavaScript的setInterval()
函数和AJAX来“模拟”异步请求,以从数据库中检索新数据。例如:
// javascript
function someFunction() {
// do some stuff
setInterval(function() { fetchNewStuff() }, 1000); // run fetchNewStuff() every second
}
function fetchNewStuff() {
Dajaxice.main.fetch_new_stuff(fetch_new_stuff_callback, {'id':$(this).attr('user_id')});
}
function fetch_new_stuff_callback(data){
// append new stuff to my table, list or whatever in HTML page
}
据我所知,对于我的需求来说,这是完全可以的。然而,随着我的应用程序变得越来越庞大和复杂,无论我尽力减少传输数据量,这最终都将成为我的服务器和客户端的太多麻烦。而且,在今天的世界中,我不能满足于“假装”这个事实 :) 因此,我想找到一些具有推送功能的“真正”的解决方案,适用于我的当前和未来项目。
我试图搜索我的问题,并找到了许多有趣的东西(Tornado、Nginx、Node.js、Twisted等),但大多数教程/文章/博客至少都是6个月前的,我相信在那段时间里发生了很多变化。到目前为止,我已经尝试测试了Tornado,测试成功了,但是我在设置它在我的生产服务器上时遇到了一些问题。我也尝试了Node.js,因为我非常擅长JavaScript,所以它非常简单,但我不确定它是否是一个好的解决方案。
我的问题是:根据以下条件,在我的当前和未来应用程序中实现什么是最好的选择(服务器、平台、框架等):
- 易于使用(例如,Node.js可能适合在这里) - 尽可能消除第三方内容(一些开箱即用的解决方案,例如Django+Websockets就可以了[这只是一个愚蠢的例子]) - 与Django一起使用的好文档(如果有一些与我的新技术和Django相关的真实示例,那将是完美的,因为我对Web服务器和相关内容几乎一窍不通) - 具有良好的前景和未来(我真的希望学到一些我将经常使用并且我不必经常重新配置的东西)
感谢您对此的思考和任何形式的帮助(链接到一些好的、最近更新的读物更是受欢迎的:)