小编Luk*_*hey的帖子

在Apache Prefork/WSGI中共享Python解释器

我试图在Apache(prefork)中使用WSGI运行Python应用程序,以便使用单个Python解释器.这是必要的,因为应用程序使用线程同步来防止发生竞争条件.由于Apache prefork产生了多个进程,因此代码最终不会在解释器之间共享,因此线程同步是无关紧要的(即每个线程只看到它自己的锁,这与其他进程没有关系).

这是设置:

  • Apache 2.0(prefork)
  • WSGI
  • Python 2.5

以下是相关的Apache配置:

WSGIApplicationGroup %{GLOBAL}
<VirtualHost _default_:80>

WSGIScriptAlias / /var/convergedsecurity/apache/osvm.wsgi

Alias /admin_media/ /var/www/html/admin_media/

<Directory /var/www/html/admin_media>
Order deny,allow
Allow from all
</Directory>

Alias /media/ /var/www/html/media/

<Directory /var/www/html/media>
Order deny,allow
Allow from all
</Directory>

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的(没有一个工作):

  1. 添加WSGIApplicationGroup%{GLOBAL}
  2. 在虚拟主机中指定WSGIDaemonProcessWSGIProcessGroup:

    WSGIDaemonProcess osvm threads = 50
    WSGIProcessGroup osvm

有没有办法强制Apache prefork使用WSGI的单个Python解释器?这些文档似乎暗示您可以使用WSGIDaemonProcess和WSGIApplicationGroup选项,但Apache仍然为每个进程创建一个单独的Python解释器.

apache mod-wsgi wsgi apache2 django-wsgi

6
推荐指数
1
解决办法
1980
查看次数

标签 统计

apache ×1

apache2 ×1

django-wsgi ×1

mod-wsgi ×1

wsgi ×1