CherryPy,SQLAlchemy核心线程安全吗?

时间:2011-10-28 16:36:20

标签: thread-safety python-3.x sqlalchemy cherrypy

在我的基于网络的应用程序中,我决定使用Cherrypy 3.2作为http框架。

我正在使用cherrypy.Application类创建WSGI兼容的appliaction对象,该对象通过Apache2与mod_wsgi一起提供。

另外,我只使用SQLalchemy 0.7.3(不是ORM)的核心组件。可以使用一些工具来实现每个请求的正确会话绑定(如SATools)。但SQLalchemy的Session对象是ORM的一部分,而不是核心。

所以我开始思考如何制作类似的工具,但没有会话。

SQLalchemy的文档说:

  

对于使用os.fork系统调用的多进程应用程序,   或者例如Python多处理模块,它通常是   要求为每个子进程使用单独的引擎。

那么如何正确地为每个樱桃线创建一个引擎?请注意,线程是由apache2(可能)创建的。

谢谢!!

编辑:可能很重要的是,wsgi应用程序是由apache2以守护进程模式运行的

1 个答案:

答案 0 :(得分:0)

在mod_wsgi下,如果我理解这个问题,我不认为这是一个问题,因为应用程序没有在mod_wsgi中的fork之前预先加载到内存中。相反,应用程序被单独加载到每个不同的进程中,因此通过fork继承而没有共享内容的问题。