Ich habe eine alte Webanwendung, die in Python geschrieben ist. Es handelt sich im Grunde genommen um eine Reihe von .py-Dateien. Zum Beispiel:
display.py
:
import cgi import re import string import operator from urllib.parse import urlparse from errors import herigean from routines import * error = false query = cgifieldstoragetodict(cgi.fieldstorage()) opening_index = 0 # flag to indicate whether we're opening the index page if ('what' not in query): query['what'] = 'index' if 'fs' not in query: query['fs'] = str(default_font_size) # open page to display try: fil = open('html/'+query['what']+'.fmt') textlines = fil.read() queryreg = re.compile('query:fs:query') textlines = queryreg.sub(query['fs'],textlines) fil.close() except ioerror: error = true if query['what'] == 'about': try: fil = open('legal/lgpl-3.0.txt') lgpl = fil.read() fil.close() fil = open('legal/gpl.txt') gpl = fil.read() fil.close() fil = open('html/availability.fmt') availability = fil.read() fil.close() except ioerror: error = true if query['what'] == 'corpus': try: fil = open('html/availability.fmt') [...] if error: herigean() else: print(frontmatter)
Warten
Wie kann ich es hinter einem Apache-Proxy mit mod_wsgi ausführen, das in einer virtuellen Umgebung installiert ist? Jetzt habe ich eine virtuelle Python 3.11-Umgebung mit mod_wsgi-express
5 installiert. Ich kann test.py mit dem folgenden Befehl erfolgreich ausführen:
mod_wsgi-express启动服务器测试.py
def application(environ, start_response): start_response('200 ok', [('content-type', 'text/html')]) return [b'hello, world!']
Wie führe ich meine alte Python-Anwendung aus? Muss ich einfach jede .py-Datei in def application(environ, start_response):
einschließen? Jede Hilfe wäre sehr dankbar.
Hinzufügen :
Die App ist www.index.html
。里面有一个 <meta http-equiv="refresh" content="0;url=display.py?what=index" />
. So wird es derzeit serviert.
Zusätzliches ii
Ich kann die Ausgabe nicht erhalten: bei Verwendung von
def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) [...] return print(frontmatter)
Ich erhalte den gesamten HTML-Code in den Protokollen, dann typeerror: 'nonetype' object is not iterable
und einen internen Serverfehler im Browser. typeerror: 'nonetype' object is not iterable
和浏览器上的内部服务器错误。
我应该使用 yield bytes(html)
而不是 print
yield bytes(html)
anstelle von print
verwenden. 🎜Das obige ist der detaillierte Inhalt vonVerwandeln Sie Ihre alte Python-Webanwendung in eine WSGI-fähige und Apache-fähige Anwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!