Re: Продолжение работы скрипта lua после отдачи ngx.HTTP_OK

Владимир nstrannik на yandex.ru
Сб Сен 5 10:57:16 UTC 2015


  Добрый день!

Я думаю стоит вынести обработчик в отдельную "нить".
Поместить данные к примеру в словарик ngx.shared.DICT,
а обработку продолжить асинхронно в корутине.
Мне кажеться стоит копать в сторону 
http://wiki.nginx.org/HttpLuaModule#coroutine.create

05.09.2015, 13:40, "Alex Aster" <rusnginx на gmail.com>:
> Добрый день всем,
>
> возможно есть у сообщества какие идеи, как заставить lua скрипт продолжить работать, после
> того как отослать клиенту ngx.exit(ngx.HTTP_OK)
>
> Идея такая что основная часть логики (дальнейшее проксирование) выносится на момент когда клиенту уже отослать ответ и закрыть соединение.
>
> Клиент в итоге получает очень быстрый ответ, а медленная логика/проксирование (уже ничего отсылать не надо клиенту) обрабатывается уже после.
>
> Как пример такое:
>
> local ngx = require 'ngx'
> local cjson = require "cjson"
> local value = cjson.new().decode(ngx.var.request_body)
> ngx.header["Content-Type"] = "application/json"
> ngx.say('{"result":true}')
> ngx.exit(ngx.HTTP_OK)
> ...здесь дальнейшая работа с value и отправка дальше, возможно и через "ngx.location.capture" и через сокеты на другие сервера...
>
> Понятно что если ngx.exit запускается, то дальнейший скрипт не работает. Чем его можно заменить (клиентское соединение закрыть и скрипт продолжает работать)?
> ,
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

-- 
С уважением, Владимир.
nstrannik на yandex.ru



Подробная информация о списке рассылки nginx-ru