Я получил что-то необычное при разработке небольшого веб-сервера с использованием Python2.7 + Apache + mod_wsgi .Основное использование этого сервера:
- Получение регулярных запросов от другого сервера (сервер A) и помещение тела запроса в БД.
- Использование некоторых фоновых потоков для анализа тела запроса в БД и отправки проанализированной информации на третий сервер (сервер B).
Apache настроен как winnt WindowsРежим MPM .Код dispatch.py, который является точкой входа, выглядит следующим образом:
from urlparse import parse_qs
pool = MyThreadClass() # A customized thread class to parse request body in DB
pool.start()
def application(environ, start_response):
# Receiving regular request from server A and put request body into BD
output = 'OK'
start_response('200OK', [('Content-Type', 'text/plain')])
return [output]
В начале класс потока создается при запуске сервера и работает отлично.Тем не менее, несколько часов спустя , я обнаружил, что класс потока (MyThreadClass) будет снова создан, а это значит, что в этот момент два экземпляра MyThreadClass будут работать в фоновом режиме.
Я не знаюне знаю, правильно ли создавать такой экземпляр при запуске Apache.У тебя есть идеи?
[edit1] Ниже приведен конфиг для части wsgi в apache:
WSGIScriptAlias / "E:/eclipse workspace/SubscriptionServer/src/business/dispatcher.py"
WSGIPythonPath "E:/eclipse workspace/SubscriptionServer/src"
<Directory "E:/eclipse workspace/SubscriptionServer">
Order deny,allow
Allow from all
</Directory>
[edit2] Я следовал инструкции @Grahamдал и установил LogLevel на «info».Я думаю, что нашел причину, но не могу объяснить, почему!
Ниже приведены журналы для журнала доступа и журнала ошибок.Мой сервер прослушивает 8080. Первые три строки error.log записываются в журнал при запуске сервера.Однако в журнале доступа во время 16: 36: 18 2011 от 124.237.78.181 поступил запрос на запрос http://g.ha99y.com/R.asp?P=123.157.218.85:8080. Как раз в то время, в журнале ошибок диспетчер загрузки сервераопять.Я не могу объяснить, откуда приходит этот вызов и почему он создает двух интерпретаторов «myhost.com: 8080 |»и 'myhost.com |'.
access.log:
124.237.78.181 - - [20/Dec/2011:16:36:18 +0800] "GET http://g.ha99y.com/R.asp?P=123.157.218.85:8080 HTTP/1.1" 404 29
error.log:
[Tue Dec 20 15:50:14 2011] [info] mod_wsgi (pid=1008): Create interpreter 'myhost.com:8080|'.
[Tue Dec 20 15:50:14 2011] [info] mod_wsgi (pid=1008): Adding 'E:/eclipse workspace/SubscriptionServer/src' to path.
[Tue Dec 20 15:50:14 2011] [info] [client 66.220.151.121] mod_wsgi (pid=1008, process='', application='myhost.com:8080|'): Loading WSGI script 'E:/eclipse workspace/SubscriptionServer/src/business/dispatcher.py'.
[Tue Dec 20 16:36:19 2011] [info] mod_wsgi (pid=1008): Create interpreter 'myhost.com|'.
[Tue Dec 20 16:36:19 2011] [info] mod_wsgi (pid=1008): Adding 'E:/eclipse workspace/SubscriptionServer/src' to path.
[Tue Dec 20 16:36:19 2011] [info] [client 124.237.78.181] mod_wsgi (pid=1008, process='', application='myhost.com|'): Loading WSGI script 'E:/eclipse workspace/SubscriptionServer/src/business/dispatcher.py'.