Python 通过监听端口实现唯一脚本运行方式

作者:To be a cool guy 时间:2022-02-04 07:40:44 

我就废话不多说了,大家还是直接看代码吧


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是没有开启监听的

来源:https://blog.csdn.net/qq_32446743/article/details/81064958

标签:Python,监听,端口,脚本
0
投稿

猜你喜欢

  • Python中那些 Pythonic的写法详解

    2023-09-14 20:01:59
  • 原生Javascript插件开发实践

    2024-04-17 09:43:45
  • Django 解决distinct无法去除重复数据的问题

    2023-02-09 22:13:22
  • Python matplotlib底层原理解析

    2021-05-11 07:05:29
  • 针对Sqlserver大数据量插入速度慢或丢失数据的解决方法

    2024-01-21 02:54:46
  • 详解python中的Turtle函数库

    2021-10-17 19:50:45
  • 超详细图解修改pip install默认安装路径的方法

    2023-02-18 05:00:09
  • PHP set_time_limit(0)长连接的实现分析

    2023-11-06 11:46:20
  • MySQL-group-replication 配置步骤(推荐)

    2024-01-17 20:51:36
  • SQL Server 存储过程遇到“表 ''#TT'' 没有标识属性无法执行 SET 操作”错误

    2024-01-24 00:07:57
  • ASP在线升级类文件源码

    2008-10-10 13:09:00
  • SQL批量插入数据几种方案的性能详细对比

    2024-01-13 11:06:32
  • Python Tornado之跨域请求与Options请求方式

    2023-11-24 19:47:08
  • 一个css垂直水平居中布局,css效果

    2008-11-03 11:40:00
  • python3 mmh3安装及使用方法

    2021-08-02 00:31:05
  • Golang多线程爬虫高效抓取大量数据的利器

    2024-02-20 06:24:44
  • Python&Matlab实现樱花的绘制

    2023-11-04 05:07:16
  • ChatGPT教你用Python实现BinarySearchTree详解

    2023-11-18 15:26:18
  • ODBC连接数据库以SQLserver为例图文详解

    2024-01-13 04:07:43
  • python中asyncio异步编程学习

    2022-10-20 06:19:37
  • asp之家 网络编程 m.aspxhome.com