Django + Apache + Windows WSGIDaemonProcess 替代方案

6
在搭建好一个Django网站并在开发服务器上运行后,我终于开始着手使用推荐的mod_wsgi/apache22在生产环境中部署。目前我只能在Windows XP机器上进行部署。
我的问题是,我写的一些Django视图使用Python的"subprocess"模块来在文件系统上运行程序时会出现错误。我一直在运行"subprocess.Popen"时出现错误。我看到了几个已经提出这个问题的SO问题,其中接受的答案是使用WSGIDaemonProcess来处理问题(由于Apache用户权限的问题,我相信)。
唯一的问题是,在Windows上,WSGIDaemonProcess对mod_wsgi不可用。有没有办法可以同时使用mod_wsgi/apache/windows/subprocess呢?

3
我一直收到错误信息。这个描述太笼统了,我们需要更具体的信息才能帮助您解决问题。请提供代码片段和实际错误信息。 - S.Lott
2
听起来更像是你回避了问题而不是解决了它。 - Nathan
抱歉,(低头认错)。 - Randy
如果您仍然有兴趣回答,请说明您遇到的是什么类型的错误,或者如果不再感兴趣,请删除此问题。 - Tomasz Wysocki
你想要启动哪些程序?请贴出一些例子。 - Seitaridis
显示剩余2条评论
2个回答

1

从mod_wsgi内部打开子进程并不是一个好主意。

另一种选择(也是常见的选择)是在Apache端使用mod_proxy,并将请求从Apache转发到运行Django的WSGI服务器。这样做的优点是将Python线程移出Apache的内存空间。有许多wsgi服务器的选项;tornado和gunicorn是两个流行的选择,而gunicorn与Django集成。

*通过集成,我只是指如果将其添加到INSTALLED_APPS中,则它提供了一个manage.py命令。


1

在这个配置下,我遇到了一些使用子进程的问题。由于我不确定你具体遇到了什么问题,所以我可以分享一些对我来说不容易解决但事后看起来相当微不足道的事情。

  1. 当尝试执行应用程序时,我收到了与权限相关的错误。我搜索了很多,但很难找到针对Windows的特定答案。这个问题很明显:我将Apache运行的用户更改为具有更高权限的用户。(请注意,这样做会带来安全风险,因此您需要确保自己理解正在进行的操作)。
  2. Django(取决于您的配置)可能会将字符串存储为Unicode。我有一个命令行应用程序,我正在尝试从我的视图中使用一些参数运行它,但它崩溃了,尽管传递了正确的参数。经过几个小时的挫败后,我执行了type(args),返回了<type 'unicode'>而不是我预期的字符串。快速转换解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接