【问题标题】:Django alternatives for real time web applications [closed]实时 Web 应用程序的 Django 替代方案 [关闭]
【发布时间】:2013-01-14 01:18:05
【问题描述】:

去年我一直在使用 Django 开发 Web 服务器应用程序。堆栈是 Django + Apache + MySql。这个堆栈非常适合我们的需求。最近出现了对一些实时功能的需求以及在服务器应用程序中更改/重写很多东西的机会。令我惊讶的是,Django 并不是这里的最佳选择。

我读了很多书(推送、WebSockets、gunicorn...很多东西..http://curella.org/blog/django-push-using-server-sent-events-and-websocket/)但我还没有决定是否要使用 Django 或者是否应该使用新的更适合工作的软件堆栈。使用 Django 似乎有点不自然。任何有经验的开发人员都可以为我指明正确的方向吗?

那么,基本问题是:对于构建实时 Web 应用程序,我现有的软件堆栈有哪些替代方案?

谢谢

PS:不是以英语为母语的人。 :)

编辑:替代方案需要允许安全连接。

编辑 2:我们开发的网络应用程序是游戏。

【问题讨论】:

标签: python django web-applications real-time


【解决方案1】:

查看http://www.tornadoweb.org/ + http://www.mongodb.org/ + https://github.com/bitly/asyncmongo + http://socket.io/ 我认为用它来创建实时应用程序是个好主意。

【讨论】:

  • 我想我会继续使用 django+apache,但我会添加 tornado 用于实时的东西,并使用 mongoDB 或 redis 用于 django 和 tornado 之间的交叉通信。在这些之前,我将使用 nginx 将每个请求重定向到正确的网络服务器。
  • 我会推荐使用 sock.js 而不是 socket.io
【解决方案2】:

你需要权衡你的决定和你的目标。

你想要一个产品

然后在你最熟悉的语言框架中编写代码,只有当你有一个产品并且它有限制时考虑切换工具。

你想学点新东西

尝试新的语言、框架 - 但生产产品可能需要更长的时间,并且您可能会发现新工具并不比旧工具好。

一半一半

尝试启动两个项目,并在每个项目中构建相同的东西,只是使用另一个工具。这将花费更长的时间,但您应该能够很快看到您喜欢/最适合您的任务的工具。

替代品

我不太确定你所说的 django 是什么意思是“不自然的”。 Django 可以进行服务器/客户端通信 - 只需使用一些 AJAX 与 django 服务器对话,然后调用另一个 pythonic 库来处理请求。 django 的 Python 替代品包括出色的 flaskweb.py,尽管它们都不会进行客户端/服务器通信,除非您也对它们进行编程(如 django)。如果你不喜欢 python,你可以试试ruby on rails。对于客户端,你需要了解一些关于 JavaScript 的知识,所以去学习一下(coffescriptjQuery 可以缓解 JS 的痛苦,但请先学习 JavaScript)。

当然,你可以硬着头皮选择node.js 作为服务器基础,显然它非常好(我还没有尝试过)——并且是用 JS 编写的。

编辑: 鉴于你的cmets,仔细看看

还要注意这个问题是一个潜在的duplicate

【讨论】:

  • 他想使用比 ajax 更大的东西,比如彗星技术,他只是想知道 django 是否可以处理它。他的产品是基于网络的游戏,因此,我认为他知道如何处理普通的 ajax 东西
  • 嗨。感谢您的回答。我所说的“不自然”是指,除非客户端提出请求,否则它不能向客户端发送任何内容。据我了解,在实时系统中,应该允许服务器更新客户端。如果我在一个游戏中有 5 名玩家(每个人都有自己的浏览器)并且其中一个拿起旗帜并获胜,我希望其他人在那一刻知道。
  • @ThaiTran 就是这样。感谢您的帮助。
【解决方案3】:

对于实时 Web 应用程序,我建议您使用 websockets,它们可以是安全的,并且响应时间非常快,因为在建立连接时不再有通信开销。如果你精通python,你可以使用twisted在python中创建服务器,在python和/或javascript中使用autobahn创建客户端。附言here 是一个非常棒的twisted 教程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 2021-08-28
    • 1970-01-01
    • 2013-09-19
    相关资源
    最近更新 更多