В Windows, то есть.
Я думаю, что ответ на этот вопрос заключается в том, что мне нужно создать службу Windows.Это кажется нелепо тяжелым для того, что я пытаюсь сделать.
Я просто пытаюсь собрать здесь небольшой прототип для моего менеджера, я не собираюсь нести ответственность за его производство ... на самом деле, он может даже никогда не БЫТЬ произведенным;это может быть просто кое-что, с чем несколько исследователей могут поиграть.
У меня есть CGI-скрипт, который получает файл для загрузки, сохраняет его во временном местоположении, а затем запускает фоновый процесс, чтобы выполнить серьезное сокращение числа.в файле.Затем некоторые вещи из Javascript бездействуют, вызывая другие CGI-скрипты, чтобы проверить состояние и обновить страницу по мере необходимости.
Все это работает, за исключением того, что проклятый веб-сервер не будет закрывать соединение, пока выполняется подпроцессБег.Я провел некоторый поиск, и кажется, что ответ на Unix состоит в том, чтобы сделать его демоном, но я застрял в Windows прямо сейчас, и я думаю, что ответ есть, чтобы сделать его службой Windows?!?Это кажется невероятно тяжелым, чтобы просто, знаете, запустить чертов процесс и затем закрыть соединение с сервером.
Это действительно единственный способ?
Редактировать: Хорошо, нашел здесь небольшой изящный взлом(выбор (3), который дает парень): Как полностью справиться с процессом в Perl CGI под IIS
Мне удалось изменить это, чтобы сделать его еще проще, и хотя этоэто решение Klugey, оно идеально подходит для быстрого и грязного маленького прототипа, который я пытаюсь создать.
Итак, у меня изначально был основной сценарий, который делал это:
subprocess.Popen("python.exe","myscript.py","arg1","arg2")
Что нене работает, как я описал.Вместо этого у меня теперь есть основной сценарий, который генерирует этот маленький кусочек Javascript, который запускается после полной загрузки документа:
$("#somecrap").load("launchBackgroundProcess.py", {arg1:"foo",arg2:"bar"});
, а затем launchBackgroundProcess.py выполняет подпроцесс.Popen.
ThisРешение никогда не масштабируется, поскольку оно все еще оставляет соединение браузера открытым в течение всего времени выполнения фоновой задачи.Но так как этот мелкий щеголь, которого я собираю, может может когда-нибудь иметь максимум двух одновременных пользователей (даже тогда, я сомневаюсь в этом), ресурсы не являются проблемой.Это позволяет пользователю просматривать главную страницу и получать обновления Javascript, даже несмотря на то, что http-соединение остается открытым без веской причины.
Спасибо за ответы!Если меня когда-нибудь попросят произвести это, я воспользуюсь ресурсами, которые рекомендует Профейн.