向nginx请求处理程序添加自定义事件

向nginx请求处理程序添加自定义事件,nginx,Nginx,嗨,有没有办法将nginx模块请求处理程序分为几个阶段,以模拟自定义模块中使用的第三方库的异步行为? 假设我有一个与另一台服务器对话的库,该库在内部管理与后端服务器的连接和请求处理。nginx将无法在基础连接上生成事件。所以我可以想到的方法是,nginx处理程序创建一个线程来运行阻塞操作,此时我想将控件返回给nginx,这样它就可以继续了。现在,当库API调用返回时,我想在nginx事件循环中发布一个事件,以便它可以恢复处理程序并将响应发送回客户端 我想这应该是可能的?有什么建议吗 提前感谢,请

嗨,有没有办法将nginx模块请求处理程序分为几个阶段,以模拟自定义模块中使用的第三方库的异步行为? 假设我有一个与另一台服务器对话的库,该库在内部管理与后端服务器的连接和请求处理。nginx将无法在基础连接上生成事件。所以我可以想到的方法是,nginx处理程序创建一个线程来运行阻塞操作,此时我想将控件返回给nginx,这样它就可以继续了。现在,当库API调用返回时,我想在nginx事件循环中发布一个事件,以便它可以恢复处理程序并将响应发送回客户端

我想这应该是可能的?有什么建议吗


提前感谢,

请编写上游处理程序。通过Unix或TCP套接字与线程通信,使用您想要的任何协议,当响应准备就绪时,将再次调用您的处理程序。用做例子谢谢亚历山大!有类似的想法,但这是首选的方法,因为我们最终使用了像1个额外的套接字到线程。知道openresty是如何处理这个问题的吗?我相信它是以异步模式运行lua脚本的?我正在尝试查看代码,但还没有弄清楚。总是在您需要通过TCP进行通信时-您需要上游模块处理程序。例如,不知道它与Redis有什么不同。唯一的区别是线程启动代码。如果您需要更复杂的工作流,例如每个传入请求都有一个以上的上游请求,那么您应该使用子请求。将这个问题从封存中排除,但是关于如何编写上游处理程序,是否有一个很好的编写方法?我发现了:,但它没有解释nginx和上游之间的通信是如何处理的,也没有解释是什么触发了对process_头回调的调用。nginx是否以某种方式创建了通信通道?它是否将完整的客户端请求推送到上游?