为什么python中的延时函数发出网页请求不会有延迟

现在当我的JS客户端关闭连接(function disconnect)时,大约需要30秒才能closed调用服务器的函数

关于为何这么长才能关闭连接的任何线索有什么方法可以更快地终止连接?



这是您的客户端问題如果您在ws模块中查找在顶部你有

 

这是为了确保连接不会在30秒之前关闭,并给每一方足够的时间来清理连接这次const不是configurable这样,而是這样但是,如果您希望终止立即发生则可以添加一个ws.finalize()after

深入研究后,似乎ws4py有些东西不符合
当您从NodeJS执行关闭操作时,它会发送一个关闭框架\x88\x80框架指示应关闭连接并发送一个关闭框架。该文件ws4py/streaming.py存在一些无法正确响应此帧的问题它基本上希望读取更多的数据,并且等待楿同的时间这将导致从客户端关闭连接,默认超时时间为30秒
所以这是您正在使用的python中的延时函数库中的错误。我使用NodeJS创建了一个客户端WebSocket.server它已正确关闭。
为什么不在NodeJS本身中使用服务器在下面的链接中有一个很好的例子

HTTP性能优化一直是个十分重要的话題但要进行优化,首先得找出有哪些地方会导致HTTP延时

在HTTP请求传輸的过程中,会经历这样的场景和可能遇见如下的问题:

1 . 用户输入或打开一个地址client查找本地http缓存,如果有未过期的本地缓存则直接200(from cache),请求结束

现代浏览器有这样的机制,在访问server时由server返回的HTTP响应头控制。

2 . client查找本地DNS缓存查看是否已有DNS信息如果没有,则向DNS解析服务器请求server的IP地址

当本地DNS缓存中已有本次访问所需的信息那么这里几乎是无延迟的,但如果client需要向DNS解析服务器请求则会有一定的延时

在这裏,开始TCP的三次握手建立连接如果client和server的网络情况并不好(网络抖动、地域过远、连接拥挤等),则会花费很长的时间

4 . 一旦连接建立起來,则client通过新建立的TCP管道向server发送HTTP请求当数据到达时,server从TCP管道中读取请求的报文并对请求进行处理

在这里,依然有可能受到网络的影响使得请求报文的传输较慢,或者是当server的负载过高或者是server处理的是一个复杂的动态资源,或者是server底层依赖的上游服务响应较慢(例如server作为反向代理)都会使得这一阶段的延时增加。

在这里依然可能被网络情况所影响。

6 . 请求/响应 的内容过长也会使得传输的时间变长,毕竟傳输速度不变的情况下内容越多,所需时间越长

所以这样一个简单请求中,也包含了硬件速度、网络、服务器负载、请求/响应报文尺寸、client/server的距离等这么多的坑等着你踩。

我要回帖

更多关于 python中的延时函数 的文章

 

随机推荐