Twisted + Django作为守护进程加上Django + Apache

时间:2015-08-25 20:49:37

标签: python django sqlite twisted daemon

我正在分布式系统上工作,其中一个进程正在控制硬件,我希望它作为服务运行。我的应用程序基于Django + Twisted,所以Twisted维护主循环,我通过Django访问数据库(SQLite),入口点是Django Management Command。

另一方面,对于用户界面,我在同一个数据库上的同一个Django项目上编写Web应用程序(也使用Crossbar作为websockets和WAMP服务器)。这是访问同一数据库的第二个Django进程。

我在这里寻找一些验证。这种方法有什么根本不对的吗?我特别害怕数据库问题(两个不同的进程通过Django ORM访问它)。

2 个答案:

答案 0 :(得分:1)

这种方法没有任何内在错误。我们目前在很多工作中使用了类似的方法。

答案 1 :(得分:1)

考虑到Django与所有基于WSGI的Web服务器一样,几乎总是有多个进程访问数据库。由于单个WSGI进程一次只能处理一个连接,因此服务器在获得任何大量流量时并行运行多个进程是正常的。

这并不意味着没有理由担心。您拥有数据库,就好像数据可能在任何两次调用之间发生变化。熟悉Django uses transactions(默认为自动提交模式,非原子请求)和...

哦,你说sqlite。是的,当您需要从多个进程写入时,sqlite可能不是最好的数据库。我可以想象,这可能适用于一个硬件的单用户界面,但如果你在添加webapp时遇到任何问题,你将需要交易到像postgresql这样的数据库服务器。