Domanda

Sto cercando di eseguire un server CGI estremamente semplice su VM fatta in Python.

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

Il problema che ho è che serve il contenuto statico correttamente e cerca di eseguire il CGI-S (è nel posto giusto e ho usato quei CGI con Apache in modo che la parte non sia assolutamente il problema) ma si blocca da qualche parte. È qualcosa che non so delle VM.

Qualsiasi puntatore alla giusta direzione sarebbe apprezzato. :)

AGGIORNAMENTO: semplificato, devo eseguire un programma sulle VM e ottenere in qualche modo i risultati di quel programma. Qualsiasi riferimento all'esecuzione dei sottoprocessi e ottenere i loro risultati è sufficiente per me.

È stato utile?

Soluzione

Stai usando la porta Python da http://hg.vmspython.org/vmspython/ ?

Se è così, penso questo thread, e questa vita (che sembra implementare una forma di popen2), può contenere le chiavi della salvezza. Sembrano esserci moduli specifici per VMS (almeno vms.starlet, vms.rtl.lib, vms.dvidef, vms.clidef) nella porta che forniscono interfacce a cose come VM spawn funzione. La documentazione sembra essere perfetta o inesistente, tuttavia.

Altri suggerimenti

CGIHTTPServer.py usi os.fork se disponibile, subprocess.Popen altrimenti.

Vedere il codice sorgente del run_cgi metodo.

Sperimentare con il subprocess Modulo per vedere se/come funziona sulle macchine virtuali.

Per eseguire un sottoprocesso e ottenere il suo output su 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
>>> 

Questo è chiaramente su Linux, quindi non sono sicuro di alcuna specifica VMS a Python o al modulo di sottoprocesso.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top