Я хотел бы использовать OpenResty с интерпретатором Lua.
Я не могу настроить платформу OpenResty для обработки двух одновременных запросов к двум отдельным конечным точкам. Я имитирую, что один запрос выполняет некоторые сложные вычисления, работая в длинном цикле:
local function busyWaiting()
local self = coroutine.running()
local i = 1
while i < 9999999 do
i = i + 1
coroutine.yield(self)
end
end
local self = coroutine.running()
local thread = ngx.thread.spawn(busyWaiting)
while (coroutine.status(thread) ~= 'zombie') do
coroutine.yield(self)
end
ngx.say('test1!')
Другая конечная точка просто немедленно отправляет ответ. ngx.say('test2')
Я отправляю запрос на первую конечную точку, а затем отправляю второй запрос на вторую конечную точку. Однако OpenResty блокируется первым запросом, поэтому я получаю оба ответа почти одновременно.
Установка параметра nginx worker_processes 1;
на большее число также не помогает, и я все равно хотел бы иметь только один рабочий процесс.
Как правильно разрешить OpenResty обрабатывать дополнительные запросы и не блокировать первый запрос?