О, и только для полноты, следующее является несколькими галочками быстрее, чем нормальная конкатенация:
Console.WriteLine(String.Concat(p.FirstName," ",p.LastName));
По умолчанию для Apache / mod_wsgi код приложения загружается только при первом запросе процесса, которому требуются эти приложения. Итак, первый шаг - настроить mod_wsgi для предварительной загрузки вашего кода при запуске процесса, а не только при первом запросе. Это можно сделать в mod_wsgi 2.X с помощью директивы WSGIImportScript.
Предполагая режим демона, который в любом случае является лучшим вариантом, это означает, что у вас будет что-то вроде:
# Define process group.
WSGIDaemonProcess django display-name=%{GROUP}
# Mount application.
WSGIScriptAlias / /usr/local/django/mysite/apache/django.wsgi
# Ensure application preloaded on process start. Must specify the
# process group and application group (Python interpreter) to use.
WSGIImportScript /usr/local/django/mysite/apache/django.wsgi \
process-group=django application-group=%{GLOBAL}
<Directory /usr/local/django/mysite/apache>
# Ensure application runs in same process group and application
# group as was preloaded into on process start.
WSGIProcessGroup django
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
Когда вы внесли изменение кода, вместо того, чтобы касаться Файл сценария WSGI, который проверяется только при следующем запросе, вместо этого отправляет сигнал SIGINT процессам в группе процессов демона.
С помощью опции 'display-name' для WSGIDaemonProcess вы можете определить, какие процессы с использованием стиля BSD ' ps 'программа. Если для 'display-name' установлено значение '% {GROUP}', 'ps' вывод должен показывать '(wsgi: django)' как имя процесса. Определите идентификатор процесса и выполните:
kill -SIGINT pid
Замените pid фактическим идентификатором процесса. Если в группе процессов демона несколько процессов, отправьте сигнал всем из них.
Не уверен, можно ли использовать killall для выполнения этого за один шаг. У меня возникла проблема с выполнением этого в MacOS X.
В mod_wsgi 3.X конфигурация может быть проще и вместо этого можно использовать:
# Define process group.
WSGIDaemonProcess django display-name=%{GROUP}
# Mount application and designate which process group and
# application group (Python interpreter) to run it in. As
# process group and application group named, this will have
# side effect of preloading application on process start.
WSGIScriptAlias / /usr/local/django/mysite/apache/django.wsgi \
process-group=django application-group=%{GLOBAL}
<Directory /usr/local/django/mysite/apache>
Order deny,allow
Allow from all
</Directory>
То есть нет необходимости использовать отдельную директиву WSGIImportScript, как конкретную группу процессов и группу приложений, как аргументы WSGIScriptAlias с побочным эффектом, заключающимся в предварительной загрузке приложения.
killall 'можно использовать для этого за один шаг. У меня возникли проблемы с выполнением этого на MacOS X.В mod_wsgi 3.X конфигурация может быть проще и вместо этого можно использовать:
# Define process group.
WSGIDaemonProcess django display-name=%{GROUP}
# Mount application and designate which process group and
# application group (Python interpreter) to run it in. As
# process group and application group named, this will have
# side effect of preloading application on process start.
WSGIScriptAlias / /usr/local/django/mysite/apache/django.wsgi \
process-group=django application-group=%{GLOBAL}
<Directory /usr/local/django/mysite/apache>
Order deny,allow
Allow from all
</Directory>
То есть нет необходимости использовать отдельную директиву WSGIImportScript, как конкретную группу процессов и группу приложений, как аргументы WSGIScriptAlias с побочным эффектом, заключающимся в предварительной загрузке приложения.
killall 'можно использовать для этого за один шаг. У меня возникли проблемы с выполнением этого на MacOS X.В mod_wsgi 3.X конфигурация может быть проще и вместо этого можно использовать:
# Define process group.
WSGIDaemonProcess django display-name=%{GROUP}
# Mount application and designate which process group and
# application group (Python interpreter) to run it in. As
# process group and application group named, this will have
# side effect of preloading application on process start.
WSGIScriptAlias / /usr/local/django/mysite/apache/django.wsgi \
process-group=django application-group=%{GLOBAL}
<Directory /usr/local/django/mysite/apache>
Order deny,allow
Allow from all
</Directory>
То есть нет необходимости использовать отдельную директиву WSGIImportScript, как конкретную группу процессов и группу приложений, как аргументы WSGIScriptAlias с побочным эффектом, заключающимся в предварительной загрузке приложения.
Как вы используете Django (mod_python vs mod_wsgi)?
Если вы используете mod_wsgi (в режиме демона), перезапуск Apache не требуется для перезагрузки приложения. Все, что вам нужно сделать, это обновить mtime вашего сценария wsgi (что легко делается с помощью touch
).
В документации mod_wsgi есть довольно подробное объяснение этого процесса: