2013-01-20 48 views
3

我目前使用Django在Apache(mod_wsgi)上开发我的应用程序。我最喜欢的事情之一是用JavaScript的setInterval()函数和AJAX从数据库中检索新数据来“伪造”异步请求。例如:为Django项目选择一个好的异步解决方案

// 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 
} 

据我所知,这对我的需求来说非常合适。但是,随着我的应用程序越来越大,越来越复杂,无论我多么努力地将传输的数据减到最少,这对我的服务器和客户来说都最终会变得非常麻烦。另外,我无法解决这个问题,在当今世界,我仍然在'伪装'这个:)所以,我想找一些'真正'的解决方案来推动我当前和未来的项目。

我曾尝试谷歌我的问题,我发现了很多有趣的东西(龙卷风,Nginx,Node.js,扭曲等),但大多数教程/文章/博客至少6个月大,我相信很多事情在那个时候改变了。到目前为止,我试图测试Tornado,并且它是成功的测试,但是我在生产服务器上设置它时遇到了一些问题。我也尝试了Node.js,它非常简单,因为我知道JavaScript非常好,但是再次,我不确定它是否是一个好的解决方案。

我这里的问题是 - 什么是最好的事情(服务器,平台,框架,等等)在我的当前和未来的应用程序依赖于这个条件实现:

  • 使用方便(如Node.js的可以装在这里)
  • 消除第三方的东西尽可能(有些乱了现成的解决方案,如Django的+ WebSockets的,这就是它[这真的只是个愚蠢的例子]
  • 与Django的使用良好的文档(这将是完美的有一些真实事例与我的新技术和Django的,因为我对Web服务器非常的n00b和相关的东西)
  • 具有良好的视角和未来 (我真的很想学习一些我会用很多东西,而且我不需要经常重新配置)

谢谢你对我的想法和任何帮助(链接一些很好的,最近更新的读数不止是欢迎:)

+2

结帐这里:http://maxburstein.com/blog/realtime-django-using-nodejs-and-socketio/ – luistm

+0

非常感谢,这看起来不错,我肯定会稍后检查一下:) – errata

回答

1

你应该有一个查看django-socketio项目,这是一个Django应用程序,它提供了通过Socket.IO与Django一起使用websockets所需的功能。

它使用gevent库以及socket.io

+1

感谢链接,我已经看到了,虽然它看起来很有趣,但'Django-socketio'这个段落在某种程度上令人失望。 Socket.IO目前在0.9版本,这个项目仍然绑定到0.6 ...我一定会试试看,但是重写所有我的应用程序来使用这个版本,有时候会重写它,这只是浪费时间再次支持更新的一个。另外,看看最新的提交,里程碑和计划似乎没有什么希望,因为某种原因,这完全失败了。 – errata

相关问题