根据任务,我必须使Django 1.6与Long轮询技术聊天(不使用redis,websokets等)。对于授权用户,我在request.session dict中存储每个线程中的最后一条消息ID(对话框):
request.session['admin_lastid'] = {'dialogue1': 112, 'dialogue2': 34}
我有两个长轮询的观点。一个def get_new(request)
扫描正在进行的对话并在新消息时更新dict:
request.session['admin_lastid']['dialogue1'] = current_thread.lastid
request.session.save()
request.session.modified = True
另一个视图def scan_threads(request)
会扫描所有对话以获取新消息,此视图会从request.session['admin_lastid']
中读取值。
但我看到会话的奇怪行为。当视图get_new记录在request.session['admin_lastid']
新值中时,下一个视图scan_threads会考虑更新的值。但是当视图get_new再次启动时,他看到了旧值。为什么?无法理解......