如何防止WSGI启动多个实例

时间:2012-02-17 00:38:28

标签: python apache wsgi

我有一个python Web应用程序,我在apache中配置为:

WSGIScriptAlias / firetalk / scripts / firetalkServer2

当我使用XMLHttpRequest从javascript访问它时,WSGI / Apache最终会启动多个实例,这会破坏我想要完成的任务。

那么,有没有办法将WSGI / Apache限制为指定python脚本的单个实例?

谢谢。

2 个答案:

答案 0 :(得分:2)

将WSGI应用程序置于守护进程模式并告诉它使用单个进程。请注意,这可能会对性能产生不利影响。

答案 1 :(得分:1)

这更能回应对其他答案的评论所需要的资格。

WSGIDaemonProcess firetalk # Uses default of single process and 15 threads.
WSGIDaemonProcess django processes=5 threads=3

WSGIScriptAlias /firetalk /scripts/firetalkServer2 \
    process-group=firetalk application-group=%{GLOBAL}

WSGIScriptAlias / /scripts/djangoServer \
    process-group=django application-group=%{GLOBAL}

firetalk应用程序将使用15个线程进入单个进程。

Django应用程序将转到多个进程。

需要mod_wsgi 3.0或更高版本作为使用WSGIScriptAlias的进程组/应用程序组选项。使用选项意味着在进程启动时预加载了WSGI脚本。

或者可以这样做:

WSGIDaemonProcess firetalk # Uses default of single process and 15 threads.
WSGIDaemonProcess other processes=5 threads=3

WSGIScriptAlias /firetalk /scripts/firetalkServer2

<Location /firetalk>
WSGIProcessGroup firetalk
WSGIApplicationGroup %{GLOBAL}
</Location>

WSGIScriptAlias / /scripts/djangoServer

WSGIProcessGroup other

firetalk应用程序将使用15个线程进入单个进程。

其他应用程序分布在多个进程中,每个进程都在这些进程的不同子解释器中。

WSGI脚本在第一次请求时延迟加载。