2011-10-28 86 views
0

在我的基於web的應用程序中,我決定使用Cherrypy 3.2作爲http框架。CherryPy,SQLAlchemy核心線程安全性?

我使用cherrypy.Application類來創建WSGI兼容appliaction對象,該對象通過Apache2與mod_wsgi一起提供。

此外,我只使用SQLalchemy 0.7.3(不是ORM)的核心組件。有一些cherrypy工具可用於每個請求的正確會話綁定(如SATools)。但是SQLalchemy的Session對象是ORM的一部分,而不是核心。

所以我開始考慮如何製作類似的工具,但沒有會話。

的SQLAlchemy的文檔說:

對於使用os.fork系統調用, 或例如Python的多處理模塊,它通常是 要求一個單獨的發動機中使用的多個進程的應用程序爲每個子進程。

那麼如何正確地爲每個櫻桃線創建一個引擎?注意這些線程是由apache2(可能)創建的。

謝謝!

編輯:這也許是重要的,那WSGI應用程序在後臺模式下的Apache2

回答

0

跑在mod_wsgi的,我不認爲這是一個問題,如果我理解這個問題,因爲應用程序沒有預裝在fork到mod_wsgi之前進入內存。相反,應用程序分別加載到每個獨立的進程中,因此不存在共享內容中由於叉中的繼承而導致的問題。

+0

您確定嗎?我正在測試它,我認爲應用程序對象實際上是在線程中共享的。 – JoshuaBoshi

+0

我編輯了這個問題,添加了wsgi app在守護進程模式下使用的信息(在這種情況下可能很重要) – JoshuaBoshi

+0

進程與線程不同。我專注於引用的文字,其中討論os.fork。這意味着它正在談論進程而不是線程。因此,我認爲你相信你每個線程都有一個困惑,因此我不能根據引用的部分看到你需要。 –