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使用wmi模块获取windows下硬盘信息的方法
May 15 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
PyQt5 QListWidget选择多项并返回的实例
Jun 17 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
python异常处理和日志处理方式
Dec 24 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
Python 机器学习工具包SKlearn的安装与使用
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
Ajax PHP简单入门教程代码
2008/04/25 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
理解JavaScript中的事件
2006/09/23 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
Python格式化压缩后的JS文件的方法
2015/03/05 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
Django中提示消息messages的设置方式
2019/11/15 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
毕业生机械建模求职信
2013/10/14 职场文书
物流专业毕业生推荐信范文
2013/11/18 职场文书
组织关系转移介绍信
2014/01/16 职场文书
渡河少年教学反思
2014/02/12 职场文书
学生周末长期请假条
2014/02/15 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
优秀护士演讲稿
2014/04/30 职场文书
企业承诺书格式范文
2015/04/28 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
Javascript webpack动态import
2022/04/19 Javascript
使用refresh_token实现无感刷新页面
2022/04/26 Javascript