用Apach替换flask内部web服务器

2024-04-25 12:11:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了一个单用户应用程序,目前可以与Flask internal web服务器一起工作。它看起来不是很健壮,只要页面加载时间很长,用户在等待时导航到其他地方,就会因各种套接字错误而崩溃。所以我想用Apache代替它。在

启动zmq程序,首先要做的是一个远程数据库连接的问题。最后,它进入run()循环以启动内部服务器。在

我遵循了各种指示,并设法获得了Apache服务的初始页面。但是,一切都出了问题,因为我现在没有可用的工作线程,也没有任何全局初始化的类,并且保存与这些线程通信的接口的全局变量都不存在。在

显然,我不是一个web开发人员。在

我现在的代码有多“错误”?有没有什么方法可以让Apache在合理的工作量下工作呢?我可以让Apache只替换run()部分并有一个正在运行的应用程序,Apache可以与它通信吗?我当前的应用程序非常简化(没有数据处理线程)如下:

comm=None
app = Flask(__name__)

class CommsHandler(object):
    __init__(self):
        *Init communication links to external servers and databases*
    def request_data(self, request):
        *Use initialised links to request something*
        return result

@app.route("/", methods=["GET"]):
def mainpage():
    return render_template("main.html")

@app.route("/foo", methods=["GET"]):
def foo():
    a=comm.request_data("xyzzy")
    return render_template("foo.html", data=a)

comm = CommsHandler()

app.run()

还是我完全错了?当我离开的时候应用程序运行只需将app类导入wsgi脚本,我就可以从主页上得到响应,因为它不需要引用全局变量comm

/foo不起作用,因为“comm”是未初始化的变量。当然,我知道为什么。我只是从来没有想过这将需要导出到Apache或任何其他web服务器。在

所以问题是,我是否可以在启动时用rc脚本启动这个应用程序,设置它的通信链接和一切,让Apache/wsgi只调用正在运行的应用程序的函数,而不是启动一个新的应用程序?在

汉努


Tags: run服务器webapp应用程序flaskdatareturn
1条回答
网友
1楼 · 发布于 2024-04-25 12:11:18

这是一个在内部服务器上运行烧瓶的简单应用程序:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

要在apache服务器上运行,请检查fastCGIdoc:

^{pr2}$

相关问题 更多 >