【发布时间】:2020-05-01 23:50:51
【问题描述】:
我想为使用云计算(无状态!)的分布式请求准备我的 Django 网络服务。因此,我需要使我的请求完全模块化,并注意不使用来自先前请求的数据。 由于某些请求需要大量数据和函数,因此将这些数据传递给每个函数是不合理的。
问题:有哪些可能性可以为单个请求“全局”存储数据?
据我所知有两种可能,但似乎都不能满足我的需求:
1. Django 会话
在 request.session 中存储数据(使用中间件 'django.contrib.sessions.middleware.SessionMiddleware')。
当我理解正确时,数据仍然保留在同一用户的下一个请求之后,直到用户注销。
这对吗?
在我的测试中,每个新请求的数据都是空的。但我不明白为什么。 而且我仍然没有处理我所有函数中的请求。
有关 Django 会话的更多信息,请参阅:
- https://docs.djangoproject.com/en/3.0/topics/http/sessions/
- https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Sessions
- clear session data after multi-page form submit in Django
- Django/Auth: logout clears the session data?
2。 Python 全局关键字
将数据存储在 python 全局变量中。
这些数据独立于 Django 请求和会话存储。
有关全局变量的更多信息,请参阅:
解决方法
作为这两种解决方案的一个丑陋的解决方法,我可以在每个请求结束时删除“全局”数据,以保持每个请求独立于其他请求。
有没有更好的方法?
这种情况在 Django 中是什么意思?
提前感谢您的支持。
【问题讨论】:
标签: python django session request