首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python redis链接建立实现分析

今天写zabbix storm job监控脚本的时候用到了python的redis模块,之前也有用过,但是没有过多的了解,今天看了下相关的api和源码,看到有ConnectionPool的实现,这里简单说下...ConnectionPool之前,如果需要连接redis,我都是用StrictRedis这个类,源码中可以看到这个类的具体解释: redis.StrictRedis Implementation ...#构造函数中默认 socket_keepalive=False,因此这里默认为短连接                     sock.setsockopt(socket.SOL_SOCKETsocket.SO_KEEPALIVE...sock.setsockopt(socket.SOL_TCP, k, v)                 # set the socket_connect_timeout before we connect...(连接并没有释放),可以构造一个统一的ConnectionPool,创建Redis实例时,可以将该ConnectionPool传入,那么后续的操作会从给定的ConnectionPool获得连接,不会再重复创建

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

Python 实现 IO 多路复用

IO操作 凡是'在内存中存在的数据交换的操作'都可以认为是IO操作,如: 内存和磁盘的交互:read write 内存和终端的交互:print input 内存和网络的交互:recv send...connect.close() s.close() 实现非阻塞的另一种方式是将原本阻塞的IO设置一个最长等待时间,规定的时间达到条件则正常执行;如果过时仍未达到条件则阻塞结束。...socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,...IO多路复用 IO 多路复用指的是同时交给内核监控多个IO事件,当哪个IO准备就绪,就立去执行哪个IO事件。以此来形成多个IO事件都可以操作的现象,而不必逐个等待执行。...并发高同时连接活跃度不是很高的请看下,epoll比select好(网站或web系统中,用户请求一个页面后随时可能会关闭);并发性不高,同时连接很活跃,select比epoll好。

62510

Python 中的 socket 模块

在这种操作中,需要把主机操作系统发出的数据转换成网络格式,或者做逆向转换,因为这两种数据的表示 方式不一样。...setsockopt 和 getsockopt 通过socket 实例 s  获取 的帮助如下: help(s.setsockopt) setsockopt(...) method of socket...(socket.AF_INET,socket.SOL_SOCKET) In [3]: s.setblocking(True) 5、重用套接字地址 不管连接是被有意还是无意关闭,有时你想始终同一个端口上运行套接字服务器..._sock,name)(*args) socket.error: [Errno 98] Address already in use 此时发现端口已经被重用,无法再次执行,需要等待重用的端口资源释放后此可以执行成功...启用端口重用:     # 此时 socket 没有开启从用     srv.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 此时,再反复的执行此脚本

87920

Python IO 操作详解

IO操作 凡是'在内存中存在的数据交换的操作'都可以认为是IO操作,如: 内存和磁盘的交互:read write 内存和终端的交互:print input 内存和网络的交互:recv send...connect.close() s.close() 实现非阻塞的另一种方式是将原本阻塞的IO设置一个最长等待时间,规定的时间达到条件则正常执行;如果过时仍未达到条件则阻塞结束。...socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,...IO多路复用 IO 多路复用指的是同时交给内核监控多个IO事件,当哪个IO准备就绪,就立去执行哪个IO事件。以此来形成多个IO事件都可以操作的现象,而不必逐个等待执行。...并发高同时连接活跃度不是很高的请看下,epoll比select好(网站或web系统中,用户请求一个页面后随时可能会关闭);并发性不高,同时连接很活跃,select比epoll好。

89020

用Python编写一个高效的端口扫描器

---- 背景 有时候,进行网络相关的研究的时候,我们需要执行一些有目的的参数测量。而端口扫描就是其中比较普遍也比较重要的一项。...python中新建一个TCP socket的代码如下: TCP_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #(1) TCP_sock.setsockopt...这样我们就初始化了一个使用IPv4,TCP协议的socket。 (2)使用了socket.setsockopt()来设置socket的另一些参数。...反之记录为关闭。另外,当连接操作出现异常的时候,我们也将端口记录为关闭状态,因为其并不能被成功连接(可能因为防火墙或者数据包被过滤等原因)。...需要注意的是,连接完成后我们一定要调用socket.close()方法来关闭与远程端口之间的TCP连接。

3.8K20

nginx的延迟关闭

另一方面,Nginx 是关闭连接后才输出日志,所以输出日志之前响应早就发送给了用户,因此对业务几乎没有影响。...上面注释的大概意思是,较老的 FreeBSD 的操作系统上,就算关闭了 TCP_NOPUSH 参数,如果一个包小于 MSS,依然有可能会被延迟5秒发送。...熟悉 socket 编程的同学应该知道 socket 有一个选项叫 SO_LINGER,如果对一个套接字开启了该选项,那么调用 close 或者 shutdown 关闭套接字时会一直阻塞到将缓冲区里的消息都发送完毕才能返回...前面说到如果直接在套接字上设置 SO_LINGER 属性,那么关闭时可能会引起阻塞,可是我们又知道 Nginx 里的套接字都设置了非阻塞属性,这会导致未定义的行为,另外如果完全由操作系统来进行延迟关闭...根据上面的分析可以看到, Nginx 发送完数据包并进入延迟关闭连接流程后,如果客户端 lingering_timeout 时间内没有进行任何操作,那么就会关闭与客户端的连接然后输出日志,这就会导致导致访问日志滞后

3.6K20

使用epoll时需要将socket设为非阻塞吗?

一、结论 提出这个问题说明对网络编程的一些基础原理未搞明白,先说下结论: 一个 socket 是否设置为阻塞模式,只会影响到 connect/accept/send/recv 等四个 socket API...二、原理分析 下面详细的解释,为了方便解释,在这之前我们先明确几个基础概念: connfd:创建 socket,主动发起连接的一端(客户端),该端调用 connect 函数主动发起连接; listenfd...API,通过这本书你能学会常用的操作系统 Socket API 和常用的网络模型,认真学完之后,你不会再纠结同步异步、阻塞非阻塞等概念。...函数 282 4.1.1 Linux上查看socket函数的帮助信息 283 4.1.2 Windows上查看socket函数的帮助信息 285 4.2 TCP网络通信的基本流程 286 4.3 设计跨平台网络通信库时的一些...socket函数用法 290 4.3.1 socket数据类型 290 4.3.2 Windows上调用socket函数 290 4.3.3 关闭socket函数 291 4.3.4 获取socket

2.2K10

【玩转ESP32】9、ESP32 作为TCP客户端连接服务器(非阻塞)

5、关闭连接 int shutdown(int s,int how) s:套接字描述符; how:标志,用于描述禁止哪些操作。 6、关闭socket close(int s) s:套接字描述符。...7、控制套接口的模式 int ioctlsocket(int s,long cmd,void *argp) s:套接字描述符; cmd:对套接口s的操作命令; argp:指向cmd命令所带参数的指针;...8、设置套接口的选项 int setsockopt(int s,int level,int optname,const void *opval,socklen_t optlen) s:套接口的描述字;...(sock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); //超时接收时间 while (1) {..., 0); close(sock); } } vTaskDelete(NULL); } 代码中设置为循环发送次数为5的倍数后,设置为阻塞,直到接收到数据后

5.4K10

Linux系统开发: 学习Linux下网络编程

进程不能再执行对套接口的任何写函数。 SHUT_RDWR:连接的读这一半和写这一半都关闭。这等效于调用shutdown两次:第一次调用时用SHUT_RD,第二次调用时用SHUT_WR。...目前有一种避免TIME_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,某些情况下这个操作可能会带来错误。...根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),...TIME_WAIT是TCP协议用以保证被重新分配的socket不会受到之前残留的延迟重发报文影响的机制,是必要的逻辑保证....选项影响套接口的操作,诸如加急数据是否普通数据流中接收,广播数据是否可以从套接口发送等等。

3.5K21

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券