Python 如何防止WSGI启动多个实例

Python 如何防止WSGI启动多个实例,python,apache,wsgi,Python,Apache,Wsgi,我有一个python web应用程序,已在apache中配置为: WSGIScriptAlias/firetalk/scripts/firetalkServer2 当我使用XMLHttpRequest从javascript访问它时,WSGI/Apache最终启动了多个实例,这打破了我试图实现的目标 那么,有没有办法将WSGI/Apache限制为指定python脚本的单个实例 谢谢。将WSGI应用程序置于守护程序模式,并告诉它使用单个进程。请注意,这可能会对性能产生不利影响。将WSGI应用程序置于

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

WSGIScriptAlias/firetalk/scripts/firetalkServer2

当我使用XMLHttpRequest从javascript访问它时,WSGI/Apache最终启动了多个实例,这打破了我试图实现的目标

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


谢谢。

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

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

这更多是为了回答对其他答案评论中所需内容的限定

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
wsgidaemonprocessfiretalk#使用默认的单进程和15个线程。
WSGIDaemonProcess其他进程=5个线程=3
WSGIScriptAlias/firetalk/scripts/firetalkServer2
WSGIProcessGroup firetalk
WSGIApplicationGroup%{GLOBAL}
WSGIScriptAlias//scripts/djangoServer
WSGIProcessGroup其他
firetalk应用程序将进入具有15个线程的单进程

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


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

这更多地是为了满足对其他答案的评论中所需内容的限定

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
wsgidaemonprocessfiretalk#使用默认的单进程和15个线程。
WSGIDaemonProcess其他进程=5个线程=3
WSGIScriptAlias/firetalk/scripts/firetalkServer2
WSGIProcessGroup firetalk
WSGIApplicationGroup%{GLOBAL}
WSGIScriptAlias//scripts/djangoServer
WSGIProcessGroup其他
firetalk应用程序将进入具有15个线程的单进程

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


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

使用守护进程模式并不自动意味着性能更差。我同意。但是,如果在服务器受到重创时,您无法运行大量Python代码,那么一些请求将不得不等待。事实上,这比这要复杂得多,而且在mod_wsgi 4.0中正在做一些工作,以解决当事情严重放缓时的一些缺点,从而避免积压。Graham-我有这个firetalk进程与django应用程序运行在同一虚拟主机上,该应用程序也使用WSGI。如何指定一个firetalk但多个dango进程@格雷厄姆使用守护进程模式并不意味着性能会自动下降。我同意。但是,如果在服务器受到重创时,您无法运行大量Python代码,那么一些请求将不得不等待。事实上,这比这要复杂得多,而且在mod_wsgi 4.0中正在做一些工作,以解决当事情严重放缓时的一些缺点,从而避免积压。Graham-我有这个firetalk进程与django应用程序运行在同一虚拟主机上,该应用程序也使用WSGI。如何指定一个firetalk但多个dango进程@格雷厄姆