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使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
Django进阶之CSRF的解决
Aug 01 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
python3 实现验证码图片切割的方法
Dec 07 Python
对python 判断数字是否小于0的方法详解
Jan 26 Python
django 捕获异常和日志系统过程详解
Jul 18 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
使用AJAX和Django获取数据的方法实例
Oct 25 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
德生PL990的分析评价
2021/03/02 无线电
PHP的中问验证码
2006/11/25 PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
快速排序 php与javascript的不同之处
2011/02/22 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
使用python实现strcmp函数功能示例
2014/03/25 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
中科软笔试题和面试题
2014/10/07 面试题
大学生求职自我评价
2014/01/16 职场文书
专项法律服务方案
2014/06/11 职场文书
大学生安全责任书
2014/07/25 职场文书
职工宿舍管理制度
2015/08/05 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android