Python 通过监听端口实现唯一脚本运行方式


Posted in Python onMay 05, 2020

我就废话不多说了,大家还是直接看代码吧

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()

Python 通过监听端口实现唯一脚本运行方式

当我们运行这段程序时,在浏览器上输入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是没有开启监听的

以上这篇Python 通过监听端口实现唯一脚本运行方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现优先级队列结构的方法详解
Jun 02 Python
使用pycharm生成代码模板的实例
May 23 Python
Python将文本去空格并保存到txt文件中的实例
Jul 24 Python
python RabbitMQ 使用详细介绍(小结)
Nov 08 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
python matplotlib实现将图例放在图外
Apr 17 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
python中str内置函数用法总结
Dec 27 Python
python process模块的使用简介
May 14 Python
python2.7使用scapy发送syn实例
May 05 #Python
python 使用raw socket进行TCP SYN扫描实例
May 05 #Python
Python之变量类型和if判断方式
May 05 #Python
Python实现CAN报文转换工具教程
May 05 #Python
python TCP包注入方式
May 05 #Python
python构造IP报文实例
May 05 #Python
python3通过udp实现组播数据的发送和接收操作
May 05 #Python
You might like
php环境无法上传文件的解决方法
2014/04/30 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
Python中非常实用的一些功能和函数分享
2015/02/14 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
Python 类的继承实例详解
2017/03/25 Python
python机器人行走步数问题的解决
2018/01/29 Python
python 默认参数相关知识详解
2019/09/18 Python
python程序 创建多线程过程详解
2019/09/23 Python
如何使用python传入不确定个数参数
2020/02/18 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
专业毕业生个性的自我评价
2013/10/03 职场文书
团日活动总结怎么写
2014/06/25 职场文书
三年级学生评语大全
2014/12/26 职场文书
介绍信怎么写
2015/05/05 职场文书
医者仁心观后感
2015/06/17 职场文书
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL