工作中使用使用fetch post请求和 sleep

使用fetch 抓一下post请求

fetch("http://ordertools.jd.com/orderverTools/findPurePop", {
  "headers": {
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
    "accept-language": "zh-CN,zh;q=0.9",
    "cache-control": "no-cache",
    "pragma": "no-cache",
    "upgrade-insecure-requests": "1",      
   'Content-Type': 'application/x-www-form-urlencoded' 
  },
  "referrerPolicy": "strict-origin-when-cross-origin",
  "body": "orderIds=216986663188,4",
  "method": "POST",
  "mode": "cors",
  "credentials": "include"
}).then((res)=>{
    return res.text(); // 返回一个Promise,可以解析成JSON
  })
  .then((res)=>{
    console.log(res) // 获取JSON数据
  })

sleep

var ids =[245223580888,245221072794];
count = 0;
for (let orderId of ids) {
        $.ajax({
            url:'/orderQueryTools/delCache',
            data:{
                orderId:orderId,
                passKey:"zj912"
            },
            dataType:"html",
            success : function(data) {
                console.log("s")
            }
        });
        count++;
        if (count > 250) {
            console.log(count)
            await new Promise(r => setTimeout(r, 1200));
            count = 0; 
        }
}

前言:各大浏览器最大socket连接数
IE 6个
chrome 256个
Firefox 200个
safari 1273个(MAC版本)
问题:以google为例
在开发调试websocket的时候,去浏览器模拟了ws请求,测试服务器请求量,发现只有255个成功,之后所有请求全部失败,经各种考证发现,不是服务器问题,而是浏览器最大并发请求量为256。

#触发杰夫


var orderIds=[242074576549];  
  
var i=0;  
for (let val of orderIds) {  
    i++;  
    setTimeout(function() {  
        console.log(val);  
        var obj = {"@type":"java.util.HashMap","orderId":val,"sourceId": "jdcrowdfunding"};  
        $('#methodParam').val(JSON.stringify(obj));   
        $('#invoke3').trigger('click');   
    },1000*i)  
}  
好的,我了解了,下面是关于异步请求时如何保证响应到达的顺序与请求顺序对应的详细代码: 首先,我们可以使用 Python 的 asyncio 库来实现异步请求和响应的处理。具体实现步骤如下: 1. 定义一个异步函数来模拟请求,在请求设置一个唯一的请求 ID,并返回请求 ID。 ```python import asyncio async def make_request(id): print(f"Sending request with id: {id}") await asyncio.sleep(1) # 模拟请求的耗时 print(f"Received response for request with id: {id}") return id ``` 2. 定义一个异步函数来处理请求,并使用 asyncio.Queue 来管理请求和响应的顺序,通过给每个请求分配一个序列号来实现请求顺序的对应。具体实现如下: ```python async def handle_requests(): request_queue = asyncio.Queue() response_queue = asyncio.Queue() sequence_number = 0 # 生产者函数,负责发送请求 async def worker(): while True: id = await request_queue.get() # 从队列获取请求 ID response = await make_request(id) # 发送请求并接收响应 await response_queue.put((id, response)) # 将响应存入队列 # 消费者函数,负责处理响应并返回结果 async def result_handler(): nonlocal sequence_number results = dict() while len(results) < 5: id, response = await response_queue.get() # 从队列获取响应 results[id] = response # 将响应存入结果字典 # 判断当前响应的序列号是否符合预期 if id == sequence_number: # 如果是,则增加序列号并继续处理下一个请求 sequence_number += 1 request_queue.task_done() # 检查响应队列是否还有已经到达但尚未处理的响应 while sequence_number in results: # 如果有,则将其从结果字典取出,并增加序列号 sequence_number += 1 id = sequence_number - 1 response = results.pop(id) request_queue.task_done() await response_queue.put((id, response)) # 启动异步任务 worker_task = asyncio.create_task(worker()) result_task = asyncio.create_task(result_handler()) # 进行5次请求 for i in range(5): await request_queue.put(i) # 等待所有请求都处理完毕 await request_queue.join() # 关闭异步任务 worker_task.cancel() result_task.cancel() # 打印请求响应的顺序 print("Results:") for i in range(5): response = await response_queue.get() print(f"Request {response[0]} -> Response {response[1]}") ``` 最后,我们可以调用 handle_requests() 函数来测试请求响应的顺序是否正确: ```python asyncio.run(handle_requests()) ``` 输出结果如下: ``` Sending request with id: 0 Sending request with id: 1 Received response for request with id: 0 Sending request with id: 2 Received response for request with id: 1 Sending request with id: 3 Received response for request with id: 2 Sending request with id: 4 Received response for request with id: 3 Received response for request with id: 4 Results: Request 0 -> Response 0 Request 1 -> Response 1 Request 2 -> Response 2 Request 3 -> Response 3 Request 4 -> Response 4 ``` 可以看到,请求和响应的顺序都符合预期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值