【发布时间】:2011-02-24 18:03:37
【问题描述】:
在我的谷歌应用程序引擎上的多项选择测验节目项目中,多个用户一旦登录就可以同时使用网络应用程序。但是由于某种原因,它们会干扰彼此的实例。 场景示例:假设用户 A 想要使用 10 个问题的问答节目,同时用户 B 想要在另一台机器上运行 10 个问题的问答节目。但是由于他们同时使用该应用程序,所以他们每个人只得到 5 个问题,而且他们的结果变得一团糟。 有人知道如何避免吗?到目前为止,我没有使用任何会话或 cookie。这是解决方案还是其他? 谢谢
#views.py
def 显示(请求): 跳过的问题=[] 问题号码=[] user_answer_list=[] answer_list=[] 所有问题=[] 如果 request.method=='POST': 初始值=1 id_list=[] 结果=问题.objects.all() 对于我的结果: id_value=i.id id_list.append(id_value)
data=request.POST.copy()
total_question=data['number_of_question']
mytime=data['time']
seconds=59
minutes=int(mytime)-1
already_questions=Random_model.objects.all().delete()
already_answers=User_answer.objects.all().delete()
random_questions_list=random.sample(id_list,int(total_question))
for i in random_questions_list:
random_model=Random_model()
random_model.list_id=i
random_model.initial_value=int(initial_value)
random_model.save()
initial_value+=1
question_list=1
a=Random_model.objects.get(initial_value=question_list)
new_question=Questions.objects.get(id=a.list_id)
template_value={ 'output': new_question,'minutes':minutes,'seconds':seconds,'question_list':question_list }
return render_to_response("quiz.html",template_value)
Followup-@Adam:嗨,我已经删除了全局变量,当我独自在笔记本电脑上工作时,程序再次运行良好。但是,当我要求我的同事从他的一端尝试时,我们都得到了相同的问题并干扰了彼此的会话,因为最终输出变得混乱。我开始使用 gae-sessions 并且能够使用 request.session 但在这种情况下我应该如何使用 gae-sessions。 如果我不清楚,请告诉我。
【问题讨论】:
-
请记住,对 AppEngine 应用程序的请求仍然只是 HTTP 请求,因此是无状态的。您将不得不做一些事情来区分一个请求和另一个请求。
-
您是否为此目的使用会话?我真的觉得我需要从视图中查看相关代码。
-
向我们展示您如何将问题与用户联系起来!
-
仁慈的代码耶稣!这么多全局变量!
-
@SRC:使用全局变量是完成你想做的事情的错误方法。你应该把所有这些地球仪存储到字典中的等效数据中。然后在需要访问该数据的所有函数之间传递字典。
标签: python django google-app-engine django-nonrel