Развертывание Python WSGI в Windows для приложения с привязкой к процессору - PullRequest
1 голос
/ 25 октября 2010

Какие варианты есть у меня для развертывания приложения Python-WSGI с привязкой к ЦП в Windows?

Приложение значительно выигрывает от нескольких процессоров (манипулирование / кодирование изображений), но GIL не позволяет им использовать их.

Насколько я понимаю:

  • mod_wsgi не поддерживает WSGIDaemonProcess в Windows, а сам Apache работает только с одним процессом

  • все решения на основе вил (флю, нерест, огнестрельное оружие) работают только на Unix

Есть ли какие-либо другие варианты развертывания, которые мне не хватает?

PS: я спросил об этом на сервере , но кто-то предложил спросить здесь.

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Я успешно использовал isapi-wsgi для развертывания веб-приложений WSGI в Windows IIS (я предполагаю, что, поскольку вы развертываете в Windows, IIS - это вариант).

СозданиеПул приложений IIS для размещения вашего приложения и настройки его в качестве веб-сада (Свойства | Производительность | Максимальное количество рабочих процессов).

Отказ от ответственности: я никогда не использовал эту функцию сам (всегда использовал приложение по умолчанию)Конфигурация пула, где максимальное количество рабочих процессов равно 1).Но я понимаю, что это ускорит процесс обработки запросов.

0 голосов
/ 27 октября 2010

Было бы немного беспорядочно, но вы могли бы использовать модуль подпроцесса для запуска рабочих процессов самостоятельно. Я уверен, что Popen.wait () и / или Popen.communicate () должны выпустить GIL. У вас все еще есть накладные расходы на создание процесса, поэтому вы можете не получить много / ничего по сравнению со стандартным CGI.

Другой вариант заключается в том, чтобы отдельные серверные / рабочие процессы работали все время и использовать некоторую форму IPC, хотя это не будет легким вариантом. Взгляните на многопроцессорный модуль и, возможно, также на Pyro.

...