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 os模块学习笔记
Jun 21 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
Python编写登陆接口的方法
Jul 10 Python
python实现分页效果
Oct 25 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
Python+OpenCV让电脑帮你玩微信跳一跳
Jan 04 Python
对python3中, print横向输出的方法详解
Jan 28 Python
Python定时任务随机时间执行的实现方法
Aug 14 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
pycharm 添加解释器的方法步骤
Aug 31 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 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技巧与注意事项分析
2011/02/03 PHP
yii中widget的用法
2014/12/03 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
python实现ID3决策树算法
2017/12/20 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
python生成九宫格图片
2018/11/19 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
init进程的作用
2015/08/20 面试题
资源环境与城市管理专业推荐信
2013/11/30 职场文书
简历的个人自我评价范文
2014/01/03 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
产品推广策划方案
2014/05/10 职场文书
走进科学观后感
2015/06/18 职场文书
迎新生晚会主持词
2015/06/30 职场文书
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS