我要请求 10 个 url,因为这些接口并不一定是通的,所以我设置了 1.5 秒的链接超时。但是如果一个一个的请求,假如 10 个 url 都连接超时,这个接口就需要耗费 15 秒。怎么搞成并发的,一共就耗时 1.5 这种。 类似于 openresty 的这种,即使全失败最多耗时 1.5 秒。
local threads = {}
for k, server in ipairs(res) do
threads[k] = ngx.thread.spawn(check_status, server)
end
for i=1, #threads do
local ok, res = ngx.thread.wait(threads[i])
end
go 里面用哪个函数呢?
1
halfcrazy 2017-10-30 20:14:58 +08:00
用 go 新起 goroutine 啊。。
|
2
specita 2017-10-30 20:26:16 +08:00 1
简单的 go func () {....} 就可以了
|
3
rockyou12 2017-10-30 20:31:59 +08:00
大哥你都用 go 了……根本不用和线程打交道好不……
|
4
rockyou12 2017-10-30 20:33:40 +08:00
还有 go 的官方教程真的很良心,lz 看完了来嘛 http://tour.studygolang.com/concurrency/1
|
5
mentalidade OP @specita 因为这个 url 不是固定的,需要循环判断拼接,可以循环里面 go func 吗?
|
6
mentalidade OP @rockyou12 好,谢谢,一会仔细看
|
7
sagaxu 2017-10-30 20:44:21 +08:00 via Android
这种问题建议发到 php 节点
|
9
mason961125 2017-10-30 22:17:56 +08:00
goroutine + channel
|
10
iyaozhen 2017-10-30 22:31:02 +08:00 via Android
@mentalidade 你先把 url 都生成好不就行了。
|
11
pynix 2017-10-31 00:17:09 +08:00
退群吧。。
|