搜索
Hi~登录注册
查看: 943|回复: 0

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

[复制链接]

0

主题

0

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2020-5-15 09:57:44 来自手机 | 显示全部楼层 |阅读模式
我就废话不多说了,大家照旧直接看代码吧
  1. 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长期连接的情况。
我们来看一段简朴的程序代码
  1. import tornado.webimport tornado.ioloopclass 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()
复制代码

当我们运行这段程序时,在欣赏器上输入ip+我们监听的端口就可以显示如许的效果:
那么我们现在逐句分析这段小代码:
1、
import tornado.web
import tornado.ioloop
起首要进行导入操作
这里的tornado.web是tornado的基础web框架模块
tornado.ioloop是tornado的核心I/O循环模块(也就是说,服务一起,就不会自己关闭了)ioloop封装了linux的epoll和BSD的kquene,这个循环模块是tornado高效的基础
2、
  1. 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、
  1. 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 通过监听端口实现唯一脚本运行方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 点我注册

快速回复 返回顶部 返回列表