我有两个观点.
view1通过会话密钥将错误消息传递给view2.
呈现view2后如何删除密钥?我只需要它一次:从view1重定向到view2.刷新我的网页后,我不需要显示该消息.我认为python一旦到达就不会继续执行return
我正在考虑设置一个到期时间戳,但我需要确保它存在至少10-20秒,如果应用程序真的那么长时间加载(我们用Django做一些服务器的东西)?所以时间不那么有希望了.
谢谢.
我有一个一年的生产站点,配置了django.contrib.sessions.backends.cached_db后端和 MySQL 数据库后端。我选择 cached_db 的原因是安全性和读取性能的结合。
问题是,负责删除所有过期会话的清理命令从未执行过,导致会话表数据长度为 2.3GB,行数为 600 万,索引长度为 500Mb。
当我尝试运行./manage.py cleanup(在 Django 1.3 中)命令或./manage.py clearsessions(Django 的 1.5 通讯员)时,该过程永远不会结束(或者我的耐心没有完成 3 小时)。
Django 使用的代码是:
Session.objects.filter(expire_date__lt=timezone.now()).delete()
Run Code Online (Sandbox Code Playgroud)
在第一印象中,我认为这是正常的,因为该表有 6M 行,但是,在检查 System 的监视器后,我发现所有内存和 cpu 都被 python 进程使用,而不是 mysqld,填满了我机器的资源。我认为这个命令代码有一些可怕的错误。似乎python在删除每一个之前遍历所有已建立的过期会话行,一一。在这种情况下,重构为原始DELETE FROM命令的代码可以解决我的问题并帮助 Django 社区,对吗?但是,如果是这种情况,Queryset 删除命令的行为很奇怪,我认为没有优化。我对吗?
我正在Django的会议上工作.
默认情况下,django在django_session中存储会话,我发现没有办法清除会话.
虽然clearsession可用于删除行.还建议将其作为cron作业运行.
但这样做意味着注销所有登录用户..正确吗?(我不确定)
这是正确的做法吗?