Flask / Django在视图函数外部维护状态数据

时间:2018-12-13 13:35:23

标签: python django flask

我正在开发一个简单的棋盘游戏,我想提供一个Web界面(当前尝试使用flask,但也可以选择django)。用户将针对游戏动作发送HTTP请求(或Ajax),并将使用视图功能对其进行处理。这些游戏动作(查看功能)将更改服务器上维护的游戏状态数据。

现在我的问题是,我应该如何实现游戏状态数据?我可以将其存储在数据库中,并通过任何视图函数调用(游戏操作)访问(获取/设置)数据库。但这对数据库可能很重?我在线搜索,发现我不能使用全局变量,因为它们在多个服务器线程/实例之间不共享。使用会话存储也不起作用,因为游戏状态是在多个用户(会话)之间共享的。

2 个答案:

答案 0 :(得分:0)

只需将您的游戏与views.py放在同一文件夹中 叫

from yourfilename import *

然后根据需要使用函数或类

挑剔:

import pickle
pickleout = open('w.pickle','ab')
    pickle.dump(board,pickleout)
    pickleout.close()

并使用它来调用它:

picklein=open('w.pickle','rb')
    arr=pickle.load(picklein)

答案 1 :(得分:0)

恕我直言,您应该:

  1. 在某种内存数据库(Memcache,Redis等)中保持运行(实例化)状态。
  2. 异步将状态保存到实际(磁盘)数据库中。
  3. 仅发送和接收状态更改(部分更新)。

您的游戏状态数据可能是字典(比我认为序列化自定义对象快)。

您可以看到一个在多人游戏here中对玩家之间的状态进行同步的示例(对不起,Erlang)