选择适合Django项目的好异步解决方案

3

我目前使用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服务器和相关内容几乎一窍不通) - 具有良好的前景和未来(我真的希望学到一些我将经常使用并且我不必经常重新配置的东西)
感谢您对此的思考和任何形式的帮助(链接到一些好的、最近更新的读物更是受欢迎的:)

2
请查看此链接:http://maxburstein.com/blog/realtime-django-using-nodejs-and-socketio/ - luistm
非常感谢,这看起来很棒,我一定会稍后检查它 :) - errata
1个回答

1
你应该看一下 Django-SocketIO 项目,这是一个提供了使用 Socket.IO 在 Django 中使用 WebSockets 所需功能的 Django 应用程序。
它使用 gevent 库和 socket.io

1
谢谢提供的链接,我已经看过了。虽然它看起来很有趣,但是“django-socketio的现状”段落让人有些失望。Socket.IO目前的版本是0.9,而这个项目仍然绑定在0.6上...我肯定会尝试一下,但是把所有我的应用程序重写成使用这个版本,然后再在以后的某个时候重新编写以支持更新的版本,这只是浪费时间。此外,从最新的提交、里程碑和计划来看,似乎并不令人充满希望,这完全违背了我的一个条件。 - errata

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接