注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

snoopyxdy的博客

https://github.com/DoubleSpout

 
 
 

日志

 
 

or保持50并发请求第三方接口  

2017-09-25 11:33:47|  分类: lua |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
当时有一个需求,发送1w个请求,保持50个并发,用or实现代码如下:
_M.parallel = function(self)
local coNum = 50
local reqList = {}
for i=1,10000,1 do
table.insert(reqList, 'http://127.0.0.1:6565/respParallel')
end

local count = 0

local reqFunc = function(i)

-- ngx.log(ngx.ERR, "============", count, #reqList, "=======")

while count <= #reqList do
ngx.sleep(0)
count = count + 1
local request_url = reqList[count]
if not request_url then
break
end

-- 发送http请求获取od和map的对应关系
local httpc = http.new()
httpc:set_timeout(60000)
-- 拼接请求参数
local opt = {
method = "GET",
     }

local res, err = httpc:request_uri(request_url, opt)
if err then
--ngx.log(ngx.ERR, string.format("thread [%s] request error count [%s] error, %s", i, count, err))
else
--ngx.log(ngx.ERR, string.format("thread [%s] request complete count[%s], body [%s]", i, count, res.body))
end
end

local msg = "thread [%s] complete"
--ngx.log(ngx.ERR, string.format(msg, i))

return msg
end


local threads = {}
for i=0,coNum,1 do
table.insert(threads, (ngx.thread.spawn(reqFunc, i)))
end


for i = 1, #threads do
local result = ngx.thread.wait(threads[i])
ngx.say(result)
end

local result, err = ngx.shared.cachDict:get("pcount")
ngx.say(string.format("=== total: %s ===", result))

return ""

end
  评论这张
 
阅读(64)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017