skynet http请求客户端

    科技2025-06-21  14

    同时开多个导致协程挂了,这种应该用go。

    local skynet = require "skynet" local socket = require "skynet.socket" skynet.start(function () local ser = {} num = 30 for i=1, num do -- url = string.format("https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_26%02d.jpg", i) --skynet.error(url); --skynet.newservice("testhttp2", url) --直接传url ser[i] = skynet.newservice("testhttp2") end for i=1, num do url = string.format("https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_23%02d.jpg", i) skynet.send(ser[i], "lua", "http_task", url) end --[[ for _, v in pairs (url) do skynet.newservice("testhttp2", v) --直接传url --local task = skynet.newservice("testhttp2") --skynet.send(task, "lua", "http_task", v) end ]] --skynet.exit() -- local hall = skynet.uniqueservice("hall") --hall是唯一服 --socket.start(listenfd, accept) -- 绑定listenfd, actor 与 epoll end) local skynet = require "skynet" local httpc = require "http.httpc" local utime = require "usertime" local arg = ... local CMD = {} function CMD.http_task(url) local millisecond = utime.getmillisecond() local host local resource local filename local pos = string.find(url, "/", 9) host = string.sub(url, 1, pos-1) --print(host) resource = string.sub(url, pos) --print(resource) filename = string.format("./img/%s", string.gsub(resource, "/", "_")) --print(filename) httpc.timeout = 300 -- set timeout 3 second local respheader = {} skynet.error("get ".. url) local status, body = httpc.get(host, resource, respheader) --for k,v in pairs(respheader) do -- print(k..":"..v) --end --string.format("%s %s", url, status) skynet.error(string.format("-- %s %s", url, status)) if status == 200 then local f = io.open(filename, "w") f:write(body) f:close() else skynet.error("error: ".. url) end local millisecond2 = utime.getmillisecond() skynet.error('use time ', (millisecond2-millisecond)/1000.0, " sec") skynet.exit() end skynet.start(function() --local f = CMD["http_task"] --f(arg) skynet.dispatch("lua", function (_, _, cmd, ...) local f = CMD[cmd] if f then f(...) end --assert(f) end) end)

    结果:,有时直接init service失败了

    [gdut17@localhost lua]$ [gdut17@localhost lua]$ ./skynet/skynet config.test [:00000002] LAUNCH snlua bootstrap [:00000003] LAUNCH snlua launcher [:00000004] LAUNCH snlua cdummy [:00000005] LAUNCH harbor 0 4 [:00000006] LAUNCH snlua datacenterd [:00000007] LAUNCH snlua service_mgr [:00000008] LAUNCH snlua main [:00000009] LAUNCH snlua testhttp2 [:0000000a] LAUNCH snlua testhttp2 [:0000000b] LAUNCH snlua testhttp2 [:0000000c] LAUNCH snlua testhttp2 [:0000000d] LAUNCH snlua testhttp2 [:0000000e] LAUNCH snlua testhttp2 [:0000000f] LAUNCH snlua testhttp2 [:00000010] LAUNCH snlua testhttp2 [:00000011] LAUNCH snlua testhttp2 [:00000012] LAUNCH snlua testhttp2 [:00000013] LAUNCH snlua testhttp2 [:00000014] LAUNCH snlua testhttp2 [:00000015] LAUNCH snlua testhttp2 [:00000016] LAUNCH snlua testhttp2 [:00000017] LAUNCH snlua testhttp2 [:00000018] LAUNCH snlua testhttp2 [:00000019] LAUNCH snlua testhttp2 [:0000001a] LAUNCH snlua testhttp2 [:0000001b] LAUNCH snlua testhttp2 [:0000001c] LAUNCH snlua testhttp2 [:0000001d] LAUNCH snlua testhttp2 [:0000001e] LAUNCH snlua testhttp2 [:0000001f] LAUNCH snlua testhttp2 [:00000020] LAUNCH snlua testhttp2 [:00000021] LAUNCH snlua testhttp2 [:00000022] LAUNCH snlua testhttp2 [:00000023] LAUNCH snlua testhttp2 [:00000024] LAUNCH snlua testhttp2 [:00000025] LAUNCH snlua testhttp2 [:00000026] LAUNCH snlua testhttp2 [:00000009] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2301.jpg [:0000000a] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2302.jpg [:0000000b] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2303.jpg [:0000000c] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2304.jpg [:0000000d] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2305.jpg [:0000000e] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2306.jpg [:0000000f] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2307.jpg [:00000010] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2308.jpg [:00000011] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2309.jpg [:00000012] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2310.jpg [:00000013] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2311.jpg [:00000014] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2312.jpg [:00000015] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2313.jpg [:00000016] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2314.jpg [:00000017] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2315.jpg [:00000018] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2316.jpg [:00000019] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2317.jpg [:0000001a] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2318.jpg [:0000001b] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2319.jpg [:0000001c] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2320.jpg [:0000001d] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2321.jpg [:0000001e] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2322.jpg [:0000001f] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2323.jpg [:00000020] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2324.jpg [:00000021] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2325.jpg [:00000022] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2326.jpg [:00000023] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2327.jpg [:00000024] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2328.jpg [:00000025] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2329.jpg [:00000026] get https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2330.jpg [:00000002] KILL self [:0000001a] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2318.jpg 200 [:0000001a] use time 2.298 sec [:0000001a] KILL self [:00000025] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2329.jpg 200 [:00000025] use time 2.303 sec [:00000025] KILL self [:00000022] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2326.jpg 200 [:00000022] use time 2.311 sec [:00000022] KILL self [:00000021] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2325.jpg 200 [:00000021] use time 2.316 sec [:00000021] KILL self [:00000020] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2324.jpg 200 [:00000020] use time 2.328 sec [:00000020] KILL self [:0000000f] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2307.jpg 200 [:0000000f] use time 2.335 sec [:0000000f] KILL self [:00000017] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2315.jpg 200 [:00000017] use time 2.336 sec [:00000017] KILL self [:00000024] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2328.jpg 200 [:00000024] use time 2.335 sec [:00000024] KILL self [:00000026] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2330.jpg 200 [:00000026] use time 2.338 sec [:00000026] KILL self [:00000016] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2314.jpg 200 [:00000016] use time 2.347 sec [:00000016] KILL self [:0000001b] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2319.jpg 200 [:0000001b] use time 2.35 sec [:0000001b] KILL self [:00000023] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2327.jpg 200 [:00000023] use time 2.353 sec [:00000023] KILL self [:0000000d] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2305.jpg 200 [:0000000d] use time 2.363 sec [:0000000d] KILL self [:0000001e] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2322.jpg 200 [:0000001e] use time 2.369 sec [:0000001e] KILL self [:0000000e] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2306.jpg 200 [:0000000e] use time 2.37 sec [:0000000e] KILL self [:00000019] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2317.jpg 200 [:00000019] use time 2.375 sec [:00000019] KILL self [:0000001d] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2321.jpg 200 [:0000001d] use time 2.375 sec [:0000001d] KILL self [:0000000b] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2303.jpg 200 [:0000000b] use time 2.376 sec [:0000000b] KILL self [:00000013] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2311.jpg 200 [:00000013] use time 2.38 sec [:00000013] KILL self [:00000014] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2312.jpg 200 [:00000014] use time 2.384 sec [:00000014] KILL self [:00000009] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2301.jpg 200 [:00000009] use time 2.386 sec [:00000009] KILL self [:00000018] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2316.jpg 200 [:00000018] use time 2.391 sec [:00000018] KILL self [:00000011] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2309.jpg 200 [:00000011] use time 2.395 sec [:00000011] KILL self [:0000000a] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2302.jpg 200 [:0000000a] use time 2.398 sec [:0000000a] KILL self [:0000001f] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2323.jpg 200 [:0000001f] use time 2.411 sec [:0000001f] KILL self [:0000001c] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2320.jpg 200 [:0000001c] use time 2.417 sec [:0000001c] KILL self [:00000012] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2310.jpg 200 [:00000012] use time 2.465 sec [:00000012] KILL self [:00000015] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2313.jpg 200 [:00000015] use time 2.54 sec [:00000015] KILL self [:00000010] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2308.jpg 200 [:00000010] use time 2.546 sec [:00000010] KILL self [:0000000c] -- https://meituba.jmsla.cn/uploads/allimg/2019/04/02/92_2304.jpg 200 [:0000000c] use time 2.704 sec [:0000000c] KILL self local skynet = require "skynet" local httpc = require "http.httpc" local url = "http://pic.netbian.com/uploads/allimg/200615/223225-15922315459470.jpg" -- https://img2018.cnblogs.com/blog/740447/201909/740447-20190903100956398-1231987978.png -- https://desk-fd.zol-img.com.cn/t_s960x600c5/g6/M00/03/09/ChMkKl-arY6IV5YFACL_JX3L4SkAAEgzwL9DLIAIv89007.jpg -- https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1604235170876&di=78ce5005fa6b88fc1edd85450897c9f5&imgtype=0&src=http%3A%2F%2Fattachments.gfan.com%2Fforum%2F201503%2F19%2F211608ztcq7higicydxhsy.jpg local function http_test(protocol) --httpc.dns() -- set dns server httpc.timeout = 500 -- set timeout 1 second protocol = protocol or "http" local respheader = {} local host = string.format("%s://timgsa.baidu.com", protocol) print("geting... ".. host) local status, body = httpc.get(host, "/timg?image&quality=80&size=b9999_10000&sec=1604235170876&di=78ce5005fa6b88fc1edd85450897c9f5&imgtype=0&src=http%3A%2F%2Fattachments.gfan.com%2Fforum%2F201503%2F19%2F211608ztcq7higicydxhsy.jpg", respheader) print("[header] =====>") --for k,v in pairs(respheader) do -- print(k..":"..v) --end print("[status] =====>", status) if status == 200 then local f = io.open("1.jpg", "w") f:write(body) f:close() else print("response error") end end local function main() http_test("https") end skynet.start(function() print(pcall(main)) skynet.exit() end)
    Processed: 0.010, SQL: 8