Python 通过监听端口实现唯一脚本运行方式
作者:To be a cool guy 发布时间:2022-02-04 07:40:44
我就废话不多说了,大家还是直接看代码吧
try:
s = socket.socket()
s.bind(('127.0.0.1', port))
except:
log.info(' * already has an instance, so exit.')
exit(0)
补充知识:Python:一个简单的tornado程序:监听服务器端口,访问时给浏览器返回一个字符串
一个简单的tornado程序
tornado是python里的一个模块,它是一种web服务器软件的开源版本
它作为web服务器,具有较出色的抗负载能力,它适用于用户量大,高并发,或者大量的HTTP持久连接的情况。
我们来看一段简单的程序代码
import tornado.web
import tornado.ioloop
class IndexHander(tornado.web.RequestHander):
def get(self):
self.write("hello world! My name is alien!")
if __name__ = "__main__":
app = tornado.web.Application([
(r"/", IndexHander)
])
app.listen(8000)
tornado.ioloop.IOLoop.current().start()
当我们运行这段程序时,在浏览器上输入ip+我们监听的端口就可以显示这样的效果:
那么我们现在逐句分析这段小代码:
1、
import tornado.web
import tornado.ioloop
首先要进行导入操作
这里的tornado.web是tornado的基础web框架模块
tornado.ioloop是tornado的核心I/O循环模块(也就是说,服务一起,就不会自己关闭了)ioloop封装了linux的epoll和BSD的kquene,这个循环模块是tornado高效的基础
2、
class IndexHander(tornado.web.RequestHander):
def get(self):
self.write("hello world! My name is alien!")
这里是创建了一个类,继承了tornado.web.RequestHander类,其实就是一个业务处理类,用于接收请求的
里面的get函数就是处理get请求的
write函数这里返回了一个字符串,也就响应信息为这段字符串
3、
if __name__ = "__main__":
这段python代码就是当入口函数为当前文件时,执行以下代码
4、
app = tornado.web.Application([
(r"/", IndexHander)
])
这段代码是利用tornado.web下的Application类实例化出一个对象,这个对象名叫app,(r"/", IndexHander)这个是路由映射
Application类是tornado.web框架的核心应用类,是与服务器对应的接口,它里面保存了路由映射表
5、
app.listen(8000)
这里的listen是绑定了监听端口8000
用Application类创建出来的对象app中,有一个listen方法,因此可以直接调用listen
所以listen就是创建一个http服务器后绑定监听端口
注意注意:
这里的listen只是绑定了端口,并没有开启监听
6、
tornado.ioloop.IOLoop.current().start()
这里是启动该实例的I/O循环
IOLoop.current()返回了当前线程的ioloop实例,也就是返回了一个对象–当前线程读写操作的对象
IOLoop.start()启动了ioloop实例的I/O循环,等待客户端的链接
注意注意:
IOLoop.start()才开启了监听,刚刚上面的listen是没有开启监听的
来源:https://blog.csdn.net/qq_32446743/article/details/81064958


猜你喜欢
- 我就废话不多说了,大家还是直接看代码吧~//isSymbol表示有无符号func BytesToInt(b []byte, isSymbol
- 在MySQL中,一个字符串中,如果某个序列具有特殊的含义,则这个序列以反斜线符号(‘\’)开头,称为转义字符。常见的转义字符:\0 ASCI
- 程序思路:此次程序主要是利用PIL(Python Image Libraty)这库,来进行图片的处理。PIL是一个功能非常强大的python
- 数据结构&Series:'''series {索引 + 数据} 形式索引是自动生成的''
- 在网页局部的布局上,需要采用大量的自适应,来满足不同长度数据、内容的合理呈现。以此保证页面不至于因为内容过多等原因,导致重叠、溢出、撑开等破
- 一、块(Block)是PL/SQL的基本执行单元,由定义部分,执行部分(必须)和例外处理部分组成。Declare/*定义部分――定义常量、变
- web 调试工具介绍和开发环境搭建python与selenium开发环境搭建:一、下载python软件:https://www.python
- 1. 前言邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本、富文
- 在开始安装前,先说明一下mysql-5.6.4与较低的版本在安装上的区别,从mysql-5.5起,mysql源码安装开始使用cmake了,因
- 段落已经讲完了,那么一些基本的应用方式也讲了一些,那么是否已经应用了呢?当然应用可以更为丰富,那么这些就需要自己在实际工作中不断的摸索与思考
- w3c range range 用来表示用户的选择区域,这块选择区域由两个边界位置界定,而位置则由其容器以及偏移量构成,称作 contain
- 要绘制单个点,可使用函数scatter(),并向其传递一对x和y坐标,它将在指定位置绘制一个点:"""使用sc
- 双向链表的基本操作的实现,供大家参考,具体内容如下在之前的博客中介绍了三种链表,分别是单链表、单向循环链表以及双向链表。本篇博客将用Pyth
- 目录1.Python 变量的概述:2.Python 变量的命名3.Python 变量赋值3.1 Python 变量赋值概述3.2 Pytho
- 1.figure语法及操作(1)figure语法说明figure(num=None, figsize=None, dpi=None, fac
- pytorch 预训练模型读取修改相关参数的填坑修改部分层,仍然调用之前的模型参数。resnet = resnet50(pretrained
- 。(新手可能认为setTimeout与setInterval是javascript函数,这是错误的。新手容易将javascript对象函数与
- 本文实例为大家分享了mysql 5.7.13 winx64安装配置方法图文教程,供大家参考,具体内容如下(1) 下载MySQL程序,您可以从
- Python import的搜索路径import的搜索路径为:搜索「内置模块」(built-in module)搜索 sys.path 中的
- 在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数、游客人数、会员人数、在线用户列表,