Tornado 网站demo 一

news/2024/5/17 6:27:57/文章来源:https://blog.csdn.net/weixin_34290352/article/details/93493207

web服务器的工作过程

  1. 创建 listen socket, 在指定的监听端口, 等待客户端请求的到来
  2. listen socket 接受客户端的请求, 得到 client socket, 接下来通过 client socket 与客户端通信
  3. 处理客户端的请求, 首先从 client socket 读取 http 请求的协议头, 如果是 post 协议, 还可能要读取客户端上传的数据, 然后处理请求, 准备好客户端需要的数据, 通过 client socket 写给客户端

案例

#!/usr/bin/env Python
#coding:utf-8import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.webfrom tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)class IndexHandler(tornado.web.RequestHandler):def get(self):greeting = self.get_argument('greeting', 'Hello')self.write(greeting + ', welcome ')if __name__ == "__main__":tornado.options.parse_command_line()app = tornado.web.Application(handlers=[(r"/", IndexHandler)])http_server = tornado.httpserver.HTTPServer(app)http_server.listen(options.port)tornado.ioloop.IOLoop.instance().start()
  • tornado.httpserver:这个模块就是用来解决 web 服务器的 http 协议问题,它提供了不少属性方法,实现客户端和服务器端的互通。Tornado 的非阻塞、单线程的特点在这个模块中体现。
  • tornado.ioloop:这个也非常重要,能够实现非阻塞 socket 循环,不能互通一次就结束呀。
  • tornado.options:这是命令行解析模块,也常用到。
  • tornado.web:这是必不可少的模块,它提供了一个简单的 Web 框架与异步功能,从而使其扩展到大量打开的连接,使其成为理想的长轮询。
import tornado.ioloop
import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.write("Hello, world")def make_app():return tornado.web.Application([(r"/", MainHandler),])if __name__ == "__main__":app = make_app()app.listen(8888)tornado.ioloop.IOLoop.current().start()

建立一个目录,在这个目录中建立一些子目录和文件。

  • handlers:在这个文件夹中放后端 Python 程序,主要处理来自前端的请求,并且操作数据库。
  • methods:准备放一些函数或者类,比如用的最多的读写数据库的函数,这些函数被 handlers 里面的程序使用。
  • statics:准备放一些静态文件,比如图片,css 和 javascript 文件等。
  • templates:放模板文件,都是以 html 为扩展名的,它们将直接面对用户。

 url.py

#!/usr/bin/env Python
# coding=utf-8
"""
the url structure of website
"""from handlers.index import IndexHandlerurl = [(r'/', IndexHandler),
]

application.py 文件

#!/usr/bin/env Python
# coding=utf-8from url import urlimport tornado.web
import ossettings = dict(template_path = os.path.join(os.path.dirname(__file__), "templates"),static_path = os.path.join(os.path.dirname(__file__), "statics"))application = tornado.web.Application(handlers = url,**settings)

server.py 文件

#!/usr/bin/env Python
# coding=utf-8import tornado.ioloop
import tornado.options
import tornado.httpserverfrom application import applicationfrom tornado.options import define, optionsdefine("port", default = 8000, help = "run on the given port", type = int)def main():tornado.options.parse_command_line()http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port)print ("Development server is running at http://127.0.0.1:%s" % options.port)print ("Quit the server with Control-C")tornado.ioloop.IOLoop.instance().start()if __name__ == "__main__":main()

 

转载于:https://www.cnblogs.com/Erick-L/p/7008642.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_777337.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站SEO优化、IIS日志分析工具 IISLogViewer V2.0 发布

PS:为了有个响亮些的名字,软件中文名更名为:点格网站日志分析器 本次发布IIS日志分析工具[IISLogViewer] V2.0版本。 下面单刀直入,看下 IIS日志分析工具 V2.0 版本所带来新的教程: 1:运行IISLogViewer.exe…

网站应用接入qq登录,实现免注册原理

去qq互联:https://connect.qq.com/index.html 创建一个wen网站类型的应用,如下过程,这个过程可能比较久 前提条件 1、网站域名已经备案成功并且网站可以访问,然后再来申请接入网站应用 然后需要用到备案信息,否则就会收到邮件通…

大规模网站sesson会话保持思路及实践配置

1.需求: 请教个问题:我用lvs的rr模式,(考虑过 ipvsadm -p,但是这样就失去了负载均衡的意义感觉),后端有10台web,用一台memcached专门用于存储session文件,但是现在问题是…

实现所有网站的qq登录返回登录后的cookie信息

开源地址:https://github.com/1015770492/autoLoginQQWithAnyWeb 注意:如果你下载了源码,想在自己的windows环境下测试,将源码中top.yumbo.music.test.configuration.ChromeAutoConfigration中 指定chromedriver路径的注释打开&a…

解决Fiddler Everywhere无法捕捉浏览器的请求问题,以及意外退出Fiddler Everywhere导致谷歌浏览器访问不了网站

今天又用到了Fiddler Everywhere又遇到了上次同样的问题,Fiddler Everywhere捕捉不到请求。 细想一下Fiddler Everywhere的作用,当我们打开它的时候本质上就是启动了一个代理服务器,也就是系统的所有http请求都经过Fiddler后台的服务器进行转…

监控网站服务质量出图学习后续篇

前面我们已经学习过了,如何收集网站服务质量的一些相关数据,然后通过入库出图,开始打算是用rrdtool做画图,但是经过一段时间的研究,发现echarts出图合理和美观,下面贴出我实时收集到的数据和出图展示部分: …

网页制作中点一张图片变成图片浏览式_做网站为什么要做响应式网站?

“响应式建站”又被称为HTML5建站、H5 响应式建站。响应式网站做为目前网站建设的主导方向,越来越多的网站建设者选择建设响应式网站。那么到底什么是响应式设计?什么是响应式建站?什么是响应式网站呢? 移动互联网发展迅速。随着智能手机的普及,互联网用户更喜欢…

selenium-java 实现QQ音乐自动登录获取cookie数据,爬取qq音乐会员资源和网易云音乐会员资源。实现任意网站的会员资源爬取

javaselenium-java 实现qq自动登录功能并获取cookie 下面是网易云音乐的qq自动功能演示,cookie信息在控制台中会打印出来。---->下一步就是利用这个cookie实现网站资源的爬取。 下面是qq音乐的自动登录 CSDN的自动登录 源代码如下 import org.openqa.selenium.*…

架构师---(大型网站分布式架构)

#参考资料大型分布式网站架构设计与实践 #感悟:书读百遍,其意自见 #QQ群北京it—推荐–交流:300458205 #群专注内推、大数据、云计算、Java、Android、UI等技术交流,欢迎你的加入。 看的越多,发现会的越少&#xff…

架构师---(大型网站技术架构核心原理与案例分析)1大型网站架构演化

#参考资料大型网站技术架构核心原理与案例分析(作者李智慧) #1初始阶段的网站架构 小型网站起初访问量不是很高,只需要一台服务器就可以了。通常我们的部署将应用程序、数据库、文件等所有的资源都在一台服务器上。通常服务器操作系统为linux…

从码农到架构师---设计大型网站架构模式和核心要素

参考资料大型网站技术架构核心原理与案例分析(作者李智慧) 参考资料架构修炼之道(作者王新栋) 网关 1-API网关的基本功能与七种措施 2-如何设计一个API: 常用工具(设计API和生成API文档) RAML和Swagger RAML的五个过程 Design->Build->Test->…

java spring boot + Selenium 爬取网站简单使用

chromedriver 下载 首先下载chromedriver 这个驱动 注意: 看一下Chrome 浏览器版本 选择合适对应的chromedriver 版本 pom引入 <!-- selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</ar…

网站 nginx http 升级 https

首先下载 nginx wget -c https://nginx.org/download/nginx-1.10.1.tar.gz然后解压 tar -zxvf nginx-1.10.1.tar.gz注意这里 如果你以前有nginx 在启动目录里使用 ./nginx -V 看看是否有 with-http_ssl_module 这个模块 如果没有请按照http升级https(转)这篇文章升级(本人也是参…

高并发高流量网站架构

Web2.0的兴起&#xff0c;掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念&#xff0c;细分了网站功能和用户群&#xff0c;不仅成功的造就了一大批新生的网站&#xff0c;也极大的方便了上网的人们。但Web2.0以用户为导向的理念&#xff0c;使得新生的网站有…

db2怎么限定查询条数_SEO优化怎么样呢?如何做seo?

SEO优化怎么样呢&#xff1f;如何做seo&#xff1f;网站上线后不是给自己看的&#xff0c;更多的情况下是给用户看的。seo优化的作用在于提升网站关键词自然排名&#xff0c;便于用户搜索&#xff0c;便于提高用户通过相关关键词看到网站的概率。通常所说的搜索引擎优化&#x…

WEB网站压力测试方案 压力测试如何换算并发用户数

http://wenku.baidu.com/view/bedf1a93daef5ef7ba0d3c29.html 压力测试通过确定一个系统的瓶颈或者不能接收的性能点&#xff0c;来获得系统能提供的最大的服务级别的测试。通俗地讲&#xff0c;压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。 极限压力测…

正在尝试其它镜像_网站被镜像了该如何解决?

相信很多站长遇到最头疼的事就是网站被镜像了吧&#xff0c;自己辛苦做出来的网站一下就被别人镜像了&#xff0c;心里一定不好受。网站镜像是什么意思呢&#xff1f;就是当你搜索你的网站&#xff0c;你会发现突然多出了很多和你的网站一模一样的网站&#xff0c;它们除了域名…

php 网站的拼接方法,第五天 ThinkPHP手把手快速拼接网站(五)

6月11日&#xff0c;晴天。“梅子留酸软齿牙&#xff0c;芭蕉分绿与窗纱。日长睡起无情思&#xff0c;闲看儿童捉柳花。”十、后台编写-续-21、改写Login模块的login方法 &#xff0c;主要是改M方法为D方法class LoginAction extends Action {function index() {// 配置页面显…

项目符号css样式,制作现代网站和应用程序时CSS项目符号样式

在本文中&#xff0c;我们将讨论无序列表&#xff0c;在制作现代网站和应用程序时&#xff0c;无序列表的发展是不可避免的。你是否做了很多很多名单的粉丝&#xff1f;我也不是。但是&#xff0c;这里我们不是在谈论家务或购物清单。我们正在讨论制作现代网站和应用程序时不可…

使用Apache的Proxy模块实现对被代理网站的访问

为已编译的apache2添加mod_proxy模块 和应用 http://help.lampok.net/log/?p1525这篇文章试过可以&#xff0c;在apache2.2.23版本的时候。blog.51yip.com/apachenginx/873.htmlhttp://shiningray.cn/proxypass-directive-in-apache.html查看apache支持的模块&#xff1a; htt…