2012-06-27 17 views
1

我该如何去编程一个简单的Web应用程序,其中 基本上看起来像这样(实际上,它不,但我将能够 从那里找到我的方式,一旦我得到以下部分右):简单的动态Web应用程序与Python

  1. 用户登录(即我需要某种认证)。
  2. 用户输入一个数字。
  3. 每隔X秒,服务器将计算在前面的X秒内输入的所有 数字的平均值。
  4. 向用户显示平均值。
  5. 其编号最接近平均值的(唯一)用户在其分数帐户的 上获得+1。

对于服务器端脚本,我想使用Python。 对于数据库访问,我将使用SQLAlchemy。 服务器是Apache。 假设我已经设置了数据库,其中包含以下字段: 用户名,密码(散列),分数。我知道如何做(2),(4)和(5)。 对于(4)我可能会使用XMLHttpRequest,虽然我不确定这个 是否是最好的解决方案。由于我的最终应用程序需要JavaScript,所以 XMLHttpRequest应该没问题。我想我可以在Python中使用“Cookie”模块找到一个解决方案, 但我不知道这是否是正确的方法。 那么对于会话管理来说,一个简单而安全的方法是什么?

@(3)这是我挣扎的主要事情。 我已经看过“插座”模块,但我不确定这个 是否适合该任务。很显然,我需要有一些像

  1. 循环监听X秒,并收集所有数字
  2. 计算平均值,确定用户谁是最接近
  3. 更新用户帐户

有一件事我不不在乎是否符合旧浏览器或IE。

你能推荐一些我应该看的东西,或者甚至可以提供 的一些代码吗?

回答

1

好的, 首先你需要把Python连接到Apache - 为此,我会推荐mod_wsgi

然后到第1步 - 您可以创建自己的Web表单并查询用户的密码并设置一个cookie以记住他们的会话(您可以将活动会话存储在数据库中或使用某些加密技巧保存它在cookie中)。

关于其他功能,你只需要在python后端和前端之间进行良好的通信 - 我会在前端推荐一个jQuery,它可以解析来自应用程序的XML,或者如果它确实很简单,只需输出字符串并让webapp获取它。

在进入最终实现之前,我会建议通过一个AJAX tutorial,这似乎涵盖了基本的很好,你可以使用内置的服务器进行调试,而不用麻烦的apache设置。

或者,您可以使用框架(例如非常轻量级的Bottle),这将为您节省大量时间。

此外,关于您正在努力的事情 - 您并不需要守护进程检查,因为可以在每次访问时计算数据 - 请确保您使用时间戳存储提交。此外,如果在过去的X秒内没有提交内容,您没有说明会发生什么 - 正确答案为零?

最后,这似乎是一个相当“动态”的应用程序 - 你将如何确保没有竞争条件?如果没有采取一些特殊的预防措施,在高流量的环境中获得可靠的结果可能很难。

+0

好的,我没有提到它,但我已经设置了mod_wsgi。对于前端/框架,我决定使用Dojo/Pyramid。不是我猜测的最简单的方法,但希望值得麻烦。 – Aton

+0

我已经通过http://www.webpython.codepoint.net工作,并有信心 ,我可以建立_something_基于cookie,但什么是规范 方法? 关于主要部分:将所有内容存储在数据库中,然后在此情况下使用 。 但是,我可能也会遇到我需要有一个真实的 事件处理程序的情况。 这个例子有点虚假,但我会检查 没有提交的情况。 – Aton