Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django使用一个python会话响应来自不同浏览器的不同请求_Python_Django_Apache_Python 2.7_Bitnami - Fatal编程技术网

Django使用一个python会话响应来自不同浏览器的不同请求

Django使用一个python会话响应来自不同浏览器的不同请求,python,django,apache,python-2.7,bitnami,Python,Django,Apache,Python 2.7,Bitnami,实际上,我是一名php(CodeIgniter)web开发人员,尽管我喜欢刚刚安装的python,它安装了Apache、MySQL、PostgreSQL和Python2.7.9以及Django。在安装过程中,它生成了一个简单的Django项目 虽然我对它很熟悉,但我开始向它添加一些代码行,但当我保存它并刷新页面,甚至重新启动浏览器时,我发现python实例仍在运行旧脚本。脚本仅在我重新启动Apache服务器时更新(我相信Python实例就是在这里终止的) 因此,为了澄清Python的这个问题,我

实际上,我是一名php(CodeIgniter)web开发人员,尽管我喜欢刚刚安装的python,它安装了Apache、MySQL、PostgreSQL和Python2.7.9以及Django。在安装过程中,它生成了一个简单的Django项目

虽然我对它很熟悉,但我开始向它添加一些代码行,但当我保存它并刷新页面,甚至重新启动浏览器时,我发现python实例仍在运行旧脚本。脚本仅在我重新启动Apache服务器时更新(我相信Python实例就是在这里终止的)

因此,为了澄清Python的这个问题,我创建了一个简单的视图,并将其URL化到
r'^test/“

from django.http import HttpResponse

i = 0

def test_view(request):
    global i
    i += 1
    return HttpResponse(str(i))
然后我发现,即使在不同的浏览器之间切换,
I
的值也在不断增加,也就是说,在另一个浏览器中,值继续增加


所以,有人能告诉我这是Django的默认行为还是我的Apache安装有问题。

这是默认行为,如果您使用gunicorn运行并在X请求后杀死工人,它可能会重置,我不记得了。它是这样的,因为应用程序在请求被服务后继续运行

我使用PHP已经有一段时间了,但我相信,一个请求进入,PHP开始运行一个脚本,返回输出,然后脚本终止。除了特殊的全局变量,比如
$\u SESSION
,没有任何东西可以真正跨请求

Django应用程序将启动并继续运行,除非有人告诉它重新加载(使用
/manage.py runserver运行时,
它将在检测到代码更改时重新加载,这是您在开发过程中需要的)

如果您对每位访客的数据感兴趣,请参阅。它看起来像:

request.session['i'] = request.session.get('i', 0) + 1

您可以将数据存储在其中,供访问者使用,直到他们失去会话为止。

这就是为什么a)您在web应用程序中不使用全局变量,b)您使用的是开发服务器,而不是Apache,为了开发。如果这个东西是这样工作的,那么MySQL会话锁是如何可能的bcos,看起来python会话从未结束过,即使没有什么要处理的。对不起,我不知道你的意思。MySQL会话锁与任何事情都有什么关系?你为什么要锁桌子?你在说什么Python会话?我想我可能对MySQL会话锁感到困惑。但这似乎与我从PHP bcos中了解到的完全不同,PHP$\u SESSION是一个全局变量,但它对每个用户都不同。因此,与为每个请求创建单独实例的PHP不同,Django只为所有请求使用一个实例,这是Django不异步的原因吗?