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基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python 基础教程之闭包的使用方法
Sep 29 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
python 把列表转化为字符串的方法
Oct 23 Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
基于Python数据分析之pandas统计分析
Mar 03 Python
django教程如何自学
Jul 31 Python
python3跳出一个循环的实例操作
Aug 18 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 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实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
Python 调用DLL操作抄表机
2009/01/12 Python
python中mechanize库的简单使用示例
2014/01/10 Python
python pdb调试方法分享
2014/01/21 Python
Python中pillow知识点学习
2018/04/30 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
PHP如何防止SQL注入
2014/05/03 面试题
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
节能宣传周活动总结
2014/05/08 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
2014年营业员工作总结
2014/11/18 职场文书
单方投资意向书
2015/05/11 职场文书
民主生活会意见
2015/06/05 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle