需求是想并发请求/delete,各项参数根据target参数不同连接不同的memcache进行delete操作,当有一个返回200即提示操作成功.
现在实现方法是通过for循环将target的num赋值为1-8,从而区分不同的memcache host和port,为什么现在结果中target都是等于8?导致连接的都是最后一个memcache
代码如下:
local reqs = {}
local total = 8
for no = 1, total, 1 do
request_args.target = no
table.insert(reqs, {''/delete'', {ctx = request_args}})
end
response = {ngx.location.capture_multi(reqs)}
delete部分代码
local target = ngx.ctx.target
local host, port = config:get("cache_" .. target .. "_host"), config:get("cache_" .. target .. "_port")
local ok, err = m:connect(host, port);
if not ok then
ngx.say("cache server " .. host .. ":" .. port .. " went away")
end
local res, err = m:delete(key)
if res then
ngx.say("found cache in server" .. host .. ":" .. port)
elseif err == 'NOT_FOUND' then
--ngx.status = 404;
ngx.say("target is " .. target )
elseif not res then
ngx.status = 404;
ngx.say("cache server" .. host .. ":" .. port .. "write error")
ngx.exit(ngx.HTTP_OK)
end