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+OpenCV人脸检测原理及示例详解
Oct 19 Python
详解python 拆包可迭代数据如tuple, list
Dec 29 Python
django celery redis使用具体实践
Apr 08 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
Aug 09 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
python实现高斯判别分析算法的例子
Dec 09 Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 Python
浅谈python 类方法/静态方法
Sep 18 Python
python PIL模块的基本使用
Sep 29 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
Numpy中的数组搜索中np.where方法详细介绍
Jan 08 Python
python 通过使用Yolact训练数据集
Apr 06 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python 测试实现方法
2008/12/24 Python
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python pass详细介绍及实例代码
2016/11/24 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
Python进度条的制作代码实例
2019/08/31 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
档案管理员岗位职责
2013/12/01 职场文书
应届毕业生求职信范例分享
2013/12/17 职场文书
办公室助理岗位职责
2013/12/25 职场文书
网络管理员岗位职责
2014/03/17 职场文书
企业文化标语大全
2014/06/10 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
导游词之天下银坑景区
2019/11/21 职场文书