我有一个需要路由请求的 Lua 代理。每个请求目标都是基于另一个 HTTP 请求的响应建立的,该请求带有来自初始请求的标头。我的理解是 HAProxy 是一个事件驱动的软件,所以阻塞系统调用是绝对禁止的,我的代码被阻塞是因为正在做一个 HTTP 请求。
我在请求后读到了关于屈服的信息,但我认为这无济于事,因为 HTTP 请求已经启动。执行请求的库是https://github.com/JakobGreen/lua-requests#simple-requests
local requests = require('requests')
core.register_fetches('http_backend', function(txn)
local dest = txn.sf:req_fhdr('X-dest')
local url = "http://127.0.0.1:8080/service";
local response = requests.get(url.."/"+dest);
local json = response.json()
return json.field
end )
如何将我的代码转换为非阻塞的?