比如在openresty中使用http去定时拉取consul的服务变更http://127.0.0.1:8500/v1/health/service/testapi?wait=5m&index=23454072,这个请求会在有长达5分钟的时间内当consul检测服务有变更时返回结果,否则只有5分钟计时结束时http才会有返回。但是如果在此期间内如果想要使用nginx -s quit结束服务的话,则会有nginx的worker因为http请求未结束而处于shuting down的状态。
http在此期间能否接收或检测到ngx.worker.exiting()的状态并作出实时响应,终止掉当前正在处理的http请求。
还有,当openresty收到quit信号后,处理http请求的worker如何结束循环并通知master我已经ok了,可以优雅的退出了?如果什么也不做,那么等若干时间之后nginx也能自动检测到所有worker都ok了,可以退出了,但这个过程会持续比较长的时间。这里我使用了os.exit()立即结束worker,合适吗?还有更好的方式吗?
此外这个定时拉取consul服务变更的操作是在worker中使用定时器去循环获取的,对于这种循环获取数据的逻辑,还有什么更合适更高效的调用方式吗?
O(∩_∩)O谢谢。