Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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
Python 在mod_wsgi上保持web.py应用程序的并发性_Python_Concurrency_Mod Wsgi_Web.py - Fatal编程技术网

Python 在mod_wsgi上保持web.py应用程序的并发性

Python 在mod_wsgi上保持web.py应用程序的并发性,python,concurrency,mod-wsgi,web.py,Python,Concurrency,Mod Wsgi,Web.py,对不起,如果这没有意义。如果需要澄清,请发表评论 我正在web.py中编写一个小文件上传应用程序,我正在使用mod_wsgi+apache部署它。我的会话管理一直存在问题,希望澄清web.py中线程是如何工作的 本质上,当有人访问我的页面时,我在呈现的html页面的隐藏字段中嵌入了一段代码。然后通过包含文件和代码的标准POST请求完成文件上载。然后,我通过在file upload POST方法中更新文件并使用GET请求将其抓取到另一个类来检索文件的进度。“session”(抱歉它太幼稚)存储在s

对不起,如果这没有意义。如果需要澄清,请发表评论

我正在web.py中编写一个小文件上传应用程序,我正在使用mod_wsgi+apache部署它。我的会话管理一直存在问题,希望澄清web.py中线程是如何工作的

本质上,当有人访问我的页面时,我在呈现的html页面的隐藏字段中嵌入了一段代码。然后通过包含文件和代码的标准POST请求完成文件上载。然后,我通过在file upload POST方法中更新文件并使用GET请求将其抓取到另一个类来检索文件的进度。“session”(抱歉它太幼稚)存储在session对象中,如下所示:

class session:

    def __init__(self):

        self.progress = 0
        self.title = ""
        self.finished = False

    def advance(self):

        self.progress = self.progress + 1 
这些会话都保存在我的应用程序脚本中的全局字典中,然后以我的代码(以前的代码)作为键进行访问

由于某种原因,我的进度似乎保持在0,从不增加。我已经调试了几个小时,发现upload类和progress类引用的两个会话对象不一样。然而,这两种代码(据我所知)是相等的。这让我抓狂,因为它在本地机器上的web.py测试服务器上运行时没有任何问题

编辑:经过一些研究,似乎每一个请求都会被复制。我试着把字典放到另一个字典里导入,但这不起作用。除了使用数据库“分离”会话字典之外,还有其他方法吗?

从定义WSGI:

可以并行运行多个请求的服务器还应该提供以单线程方式运行应用程序的选项,以便非线程安全的应用程序或框架仍然可以与该服务器一起使用


请查看WSGI服务器的文档。

Apache/mod_WSGI可以在多进程配置中运行,并且可能您的请求甚至不由同一进程提供服务,如果对于该多进程配置,每个进程都是单线程,则永远不会,因为在进行上载时,没有其他请求可以由同一进程处理过程阅读:

您可能应该将mod_wsgi守护进程模式与单线程多线程守护进程一起使用