首頁 > 後端開發 > Python教學 > 將舊的 Python Web 應用程式轉變為 WSGI 就緒和 Apache

將舊的 Python Web 應用程式轉變為 WSGI 就緒和 Apache

PHPz
發布: 2024-02-09 15:33:03
轉載
597 人瀏覽過

将旧的 Python Web 应用程序转变为 WSGI 就绪和 Apache

問題內容

我有一個用 python 寫的古老 web 應用程式。它基本上是一堆 .py 檔案。例如:

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)
登入後複製

等等

如何使用虛擬環境中安裝的 mod_wsgi 在 apache 代理程式後面運行它?現在我有一個pythong 3.11虛擬環境,其中安裝了mod_wsgi-express 5。我可以使用以下命令成功運行test.py:

mod_wsgi-express啟動伺服器測試.py

#
def application(environ, start_response):
    start_response('200 ok', [('content-type', 'text/html')])
    return [b'hello, world!']
登入後複製

如何運行我的舊 python 應用程式?我是否只是將每個 .py 檔案包裝在 def application(environ, start_response): 中?任何幫助將不勝感激。

新增

該應用程式的 www.index.html 。裡面有一個 <meta http-equiv="refresh" content="0;url=display.py?what=index" />。這就是目前的服務方式。

附加ii

我無法獲得輸出:使用時

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    [...]
    return print(frontmatter)
登入後複製

我在日誌中取得了整個 html,然後是 typeerror: 'nonetype' object is not iterable 和瀏覽器上的內部伺服器錯誤。


正確答案


我應該使用 yield bytes(html) 而不是 print

以上是將舊的 Python Web 應用程式轉變為 WSGI 就緒和 Apache的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板