如何解决cgo nginx 模块请求永远阻塞
我正在使用 Go 编写一个 nginx 动态模块。像文本处理这样的简单任务可以工作,但是像 http.Get 和 exec.Command 这样的功能不起作用,请求永远被阻塞。
您可以在这里尝试:https://github.com/caiguanhao/nginx-hello-world-module。 (有两种请求,一种有效,一种无效。)
我也试过下面的代码,调用处理函数时goroutine函数不执行:
//export Handler
func Handler(r *C.ngx_http_request_t) C.ngx_int_t {
fmt.Println("1") // executed
c := make(chan bool)
go func() { // did not execute
fmt.Println("2")
c <- true
}()
fmt.Println("3") // executed
fmt.Println(<-c) // blocked
// ...
}
这是 nginx 错误还是 Go 错误?或者有什么解决方法可以解决它?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。