0

我已经使用 mod_wsgi 创建了一个可以在本地调用的 Web 服务器。现在我刚刚发现我需要更改它,以便它通过 Apache 服务器运行。我希望在不重写整个脚本的情况下做到这一点。

from wsgiref.simple_server import make_server



class FileUploadApp(object):
    firstcult = ""

    def __init__(self, root):
        self.root = root

    def __call__(self, environ, start_response):

        if environ['REQUEST_METHOD'] == 'POST':
            post = cgi.FieldStorage(
                fp=environ['wsgi.input'],

                environ=environ,
                keep_blank_values=True
            )

        body = u"""
            <html><body>

            <head><title>title</title></head>
            <h3>text</h3>
            <form enctype="multipart/form-data" action="http://localhost:8088" method="post">
            </body></html>
            """


        return self.__bodyreturn(environ, start_response,body)

    def __bodyreturn(self, environ, start_response,body):
        start_response(
                    '200 OK',
                    [
                        ('Content-type', 'text/html; charset=utf8'),
                        ('Content-Length', str(len(body))),
                    ]
                )        
        return [body.encode('utf8')]

def main():
    PORT = 8080
    print "port:", PORT
    ROOT = "/home/user/"
    httpd = make_server('', PORT, FileUploadApp(ROOT))
    print "Serving HTTP on port %s..."%(PORT)
    httpd.serve_forever() # Respond to requests until process is killed

if __name__ == "__main__":
    main()

我希望找到一种方法来避免制作服务器并使运行我的脚本的多个实例成为可能。

4

1 回答 1

2

文档位于:

解释了 mod_wsgi 期望给出的内容。

如果您还阅读:

您将了解构建 WSGI 应用程序入口点的各种方式。

从中您应该确定 FileUploadApp 符合所描述的定义 WSGI 应用程序的方法之一,因此您只需要满足 mod_wsgi 对 WSGI 应用程序对象可作为“应用程序”访问的要求。

于 2013-11-12T09:04:23.893 回答