Простой CGI веб-сервер на Python на VMS - PullRequest
6 голосов
/ 03 мая 2011

Я пытаюсь запустить чрезвычайно простой CGI-сервер на VMS, выполненный на python.

import sys    
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler    
server_address=('',8080)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()

Проблема, с которой я столкнулся, заключается в том, что он правильно обслуживает статический контент и пытается выполнить CGI-ы (он находится в нужном месте, и я использовал эти CGI-файлы с Apache, так что эта часть определенно не является проблемой), но это где-то висит Это то, чего я не знаю о VMS.

Любой указатель в правильном направлении будет оценен. :)

Обновление: упрощенно, мне нужно выполнить программу в VMS и каким-то образом получить результаты этой программы. Мне достаточно любой ссылки на выполнение подпроцессов и получение их результатов.

Ответы [ 3 ]

1 голос
/ 30 мая 2011

Используете ли вы порт Python от http://hg.vmspython.org/vmspython/?

Если это так, я думаю, этот поток и этот файл (который, похоже, реализует форму popen2), могут содержать ключи к вашему спасению. Похоже, в порту имеются специфичные для VMS модули (по крайней мере vms.starlet, vms.rtl.lib, vms.dvidef, vms.clidef), которые предоставляют интерфейсы для таких функций, как функция spawn VMS. Однако документация выглядит нечеткой или отсутствует.

0 голосов
/ 30 мая 2011

CGIHTTPServer.py использует os.fork, если доступно, subprocess.Popen, если нет.

См. Исходный код метода run_cgi .

Поэкспериментируйте с модулем subprocess, чтобы увидеть, работает ли он на VMS.

0 голосов
/ 25 мая 2011

Чтобы выполнить подпроцесс и получить его вывод в posix:

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from subprocess import Popen, PIPE
>>> output = Popen(['/bin/ls', '/'], stdout = PIPE).communicate()[0]
>>> print output
bin
boot
dev
etc
home
..snip..
root
sbin
>>> 

Это явно для Linux, поэтому я не уверен в спецификах VMS для Python или модуля подпроцесса.

http://docs.python.org/library/subprocess.html

...