Rumah > pembangunan bahagian belakang > Tutorial Python > Tukar aplikasi web Python lama anda kepada sedia WSGI dan Apache

Tukar aplikasi web Python lama anda kepada sedia WSGI dan Apache

PHPz
Lepaskan: 2024-02-09 15:33:03
ke hadapan
641 orang telah melayarinya

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

Kandungan soalan

Saya mempunyai aplikasi web purba yang ditulis dalam python. Ia pada asasnya sekumpulan fail .py. Contohnya:

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)
Salin selepas log masuk

Tunggu

Bagaimana untuk menjalankannya di belakang proksi apache menggunakan mod_wsgi yang dipasang dalam persekitaran maya? Kini saya mempunyai persekitaran maya pythong 3.11 dengan mod_wsgi-express 5 dipasang. Saya berjaya menjalankan test.py menggunakan arahan berikut:

mod_wsgi-express启动服务器测试.py

def application(environ, start_response):
    start_response('200 ok', [('content-type', 'text/html')])
    return [b'hello, world!']
Salin selepas log masuk

Bagaimana untuk menjalankan aplikasi python lama saya? Adakah saya hanya membungkus setiap fail .py dalam def application(environ, start_response):? Sebarang bantuan amatlah dihargai.

Tambah :

Apl ini ialah www.index.html 。里面有一个 <meta http-equiv="refresh" content="0;url=display.py?what=index" />. Beginilah ia dihidangkan pada masa ini.

Tambahan ii

Saya tidak boleh mendapatkan output: apabila menggunakan

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    [...]
    return print(frontmatter)
Salin selepas log masuk

Saya mendapat keseluruhan html dalam log, kemudian typeerror: objek 'nonetype' tidak boleh diulang dan ralat pelayan dalaman pada penyemak imbas. typeerror: 'nonetype' object is not iterable 和浏览器上的内部服务器错误。


正确答案


我应该使用 yield bytes(html) 而不是 print

Jawapan betul

🎜🎜Saya harus menggunakan yield bytes(html) dan bukannya print. 🎜

Atas ialah kandungan terperinci Tukar aplikasi web Python lama anda kepada sedia WSGI dan Apache. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan