Python Tornado Web服务器简单示例

源内容(英文)

Tornado 是一个强大的、开源的 Web 框架,旨在用于构建可扩展且非阻塞的 Python Web 应用程序。它由 FriendFeed(后来被 Facebook 收购)开发,用于高效处理长连接网络。Tornado 以其高性能、简单性和异步能力而闻名,是构建实时 Web 应用程序的绝佳选择。

在本文中,我们将通过三个代码示例来探索 Tornado,范围从一个简单的 "Hello World" 应用程序到更高级的功能,如表单提交和文件上传。

Tornado – Web 框架

下面是 Python 中 Tornado -Web 框架的示例。

示例 1:Tornado 中的 Hello World

在这个例子中,下面的 Python 脚本使用 Tornado web 框架创建了一个基本的 web 应用程序。它定义了一个处理程序,用于响应根 URL ("/") 上的 GET request,返回 "Hello, Tornado!"。应用程序在端口 8888 上监听,并在执行时启动 Tornado I/O 循环。

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, Tornado!")

def make_app():
    return tornado.web.Application([(r"/", MainHandler)])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

#### 运行服务器

使用以下命令运行 tornado 服务器

python script_name.py

输出 :

!first-

示例 2:Tornado 中的表单提交

app.py : 现在,让我们看一个涉及处理表单提交的更高级示例。在这个例子中,我们创建了一个带有用户名输入字段的表单。Tornado 处理程序使用 self.get_argument 检索提交的数据,并返回个性化的问候。

import tornado.ioloop
import tornado.web

class FormHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("form.html")

    def post(self):
        name = self.get_argument("name")
        self.write(f"Hello, {name}!")

def make_app():
    return tornado.web.Application([(r"/form", FormHandler)])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

index.html : 这个 HTML 文档定义了一个简单的表单,其中包含一个 "Name" 输入字段和一个提交按钮。它链接到外部样式表 ("style.css") 进行样式设置,设置表单的宽度以及标签和输入的样式。表单被设置为使用 POST method 将数据提交到 "/form"。




    Simple Form
    


    /* style.css */
body {
    font-family: Arial, sans-serif;
    margin: 20px;
}

form {
    width: 300px;
}

label {
    display: block;
    margin-bottom: 5px;
}

input {
    width: 100%;
    margin-bottom: 10px;
}



    

Simple Form


#### 运行服务器

使用以下命令运行 tornado 服务器

python script_name.py

输出:

!ezgifcom-video-to-gif-converter-(1).gif)

示例 3:Tornado 中的文件上传

app.py : 这个 Tornado 脚本设置了一个文件上传服务器,只有一个 "/upload" 路由。UploadHandler 通过渲染 HTML 上传表单来处理 GET 请求,并通过将上传的文件保存到 ‘uploads‘ 目录来处理 POST 请求。服务器运行在端口 8888 上。

import tornado.ioloop
import tornado.web

class UploadHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("upload.html")

    def post(self):
        file = self.request.files[‘file‘][0]
        filename = file[‘filename‘]
        with open(f"uploads/{filename}", ‘wb‘) as f:
            f.write(file[‘body‘])
        self.write(f"File ‘{filename}‘ uploaded successfully!")

def make_app():
    return tornado.web.Application([(r"/upload", UploadHandler)])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

upload.html : 这个 HTML 文档创建了一个简单的表单

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/49312.html
点赞
0.00 平均评分 (0% 分数) - 0