Простой веб -сервер CGI в Python на виртуальной машине

StackOverflow https://stackoverflow.com/questions/5864139

  •  28-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь запустить чрезвычайно простой сервер CGI на виртуальной машине, выполненном в Python.

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

Смотрите исходный код run_cgi метод.

Экспериментируйте с subprocess Модуль, чтобы увидеть, работает ли/как это работает на виртуальных машинах.

Чтобы выполнить подпроцесс и получить его вывод на 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, поэтому я не уверен в каких -либо спецификациях виртуальных машин для Python или модуля подпроцесса.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top