将数据发送到django站点

时间:2010-07-27 23:59:13

标签: python django web-applications

我正在尝试构建一个django服务,许多客户端将向其发送数据。每个客户端将代表一个经过身份验证的用户,可能是否连接到Internet,因此客户端将聚合数据并在连接可用时发送它们。数据也应该在本地持久化,以便快速访问它们而无需访问服务器。

数据的性质很简单。它与游戏成就有关,因此每个用户都将获得他们已经取得的成就。因此,没有一致性问题,因为每个用户将发送他们自己的成就统计数据,并且没有用户将编辑其他人的数据。

我正在努力寻找最合适的媒介。我的第一个想法是POST HTTP请求,django服务器将处理。 python客户端将通过执行这些请求来登录并“发送”数据。任何人都可以提出更好的替代方案,或者告诉我为什么这种设置适合与否?

我还想知道您建议的格式/方式从客户端获取数据。我在想json或yaml

编辑2:在S.Lott的推荐之后,这个问题已得到改进。

3 个答案:

答案 0 :(得分:2)

很多人都喜欢Piston

我们推出了自己的(活塞尚未发布)。是的,您可以在Django中使用JSON有效负载轻松处理RESTful POST请求。但是......一般来说处理REST是一个痛苦的问题,因为调度基于方法的视图函数(GET,POST,PUT或DELETE)不是Django的一部分。你可以推出自己的基于方法的调度程序,但是 - 从长远来看 - 你会对自己的解决方案不满意。

活塞不是“额外开销”。你所描述的不是 - 实际上 - 简单。活塞是适量的开销。


“在本地数据库中聚合这些调用然后将它们与服务器同步的客户端。”太复杂了。

如果这些事件以不可思议的巨大速度(每秒100次)发生,那么你需要一个多进程的Apache前端,通过mod_wsgi运行几个Django后端。

但让客户端同步到中央数据库会太复杂。有太多关于客户收集一些数据和崩溃或客户端同步两次的开放性问题,因为有人在不应该运行应用程序两次时运行应用程序。 “数据库同步”的问题太多了。避免它。

答案 1 :(得分:0)

我相信xmlrpc将是一个有效的解决方案。这是一个例子:http://code.djangoproject.com/wiki/XML-RPC我们在工作中使用它并且工作得很好,因为我们的服务器也提供了一些服务。

答案 2 :(得分:0)

尝试使用角度的Django Rest Framework。

您可以将Django / Django Rest作为后端。

对于前端,你可以使用nodejs或python simplehttp服务器或grunt或gulp运行angular或react.js。

因此前端将与django服务器通信以获取数据。要登录,您可以使用auth-token和angular cookies。

这也会减少后端服务器的负载,因为后端不必提供html / templates