我有一个在Windows上运行的Django应用程序(通过Apache + mod_wsgi),它受CPU限制。但是Windows上的Apache只执行MPM(多线程)工作者,而不是prefork(多进程工作者),而单个Python解释器不会利用多个CPU。
我会切换到FastCGI,但这需要Flup,Windows不支持。
到目前为止,我提出的唯一解决方案是启动多个Django实例,然后使用Apache负载平衡来分发请求。只要我在命令窗口中启动Django实例,这样就可以正常工作,但我似乎无法弄清楚如何将多个Django实例设置为Windows服务(这样我就可以让它们在系统启动时自动启动)。 / p>
有没有人想出一个让基于Django的网站在Windows服务器上使用多个CPU的策略?
答案 0 :(得分:2)
我认为您的问题实际上是“如何运行多个Apache实例作为Windows服务?”来自docs:
httpd.exe -k install -n "ApacheBE1" -f "c:\files\my_BE1.conf"
httpd.exe -k install -n "ApacheBE2" -f "c:\files\my_BE2.conf"
只是想知道你有这个部分,你尝试设置多个重量级的Apache后端实例并在它们之间进行负载平衡吗?
your.host.com:80
- load balancer / light weight front-end
- balancing between localhost:9001-900x
localhost:9001
- mod_wsgi / heavy weight back-end 1
localhost:9002
- mod_wsgi / heavy weight back-end 2
localhost:9003
- mod_wsgi / heavy weight back-end 3
答案 1 :(得分:0)
也许你可以使用mod_wsgi的“守护进程”模式。 Here's some documentation。在标题操作模式下查看,它表示它的操作类似于FastCGI。
此外,look at the configuration guidelines。在页面中搜索“守护进程”,你会看到一堆关于如何设置它的信息。