7 ms·
for Go, do you rely on `net/http/fcgi` to run it? Do you have any example i can have a look at?
by lma21 4y ago
for Go, do you rely on `net/http/fcgi` to run it? Do you have any example i can have a look at?
- Animats 4y ago> for Go, do you rely on `net/http/fcgi` to run it? Yes. > Do you have any example I can have a look at? https://github.com/John-Nagle/vehiclelogserver/blob/master/vehiclelogserver.go https://github.com/John-Nagle/vehiclelogserver/blob/master/v... There's not much machinery required. package main import ( "database/sql" "net/http" "net/http/fcgi" ) // // Called by FCGI for each request // func (sv FastCGIServer) ServeHTTP(w http.ResponseWriter, req *http.Request) { body := make([]byte, 5000) // buffer for body, which should not be too big if req.Body != nil { len, _ := req.Body.Read(body) // body of HTTP request bodycontent := body[0:len] // take correct part of buffer Handlerequest(sv, w, bodycontent, req) // handle request } } // Run FCGI server func main() { sv := new(FastCGIServer) fcgi.Serve(nil, sv) } // Handlerequest -- handle one request from a client func Handlerequest(sv FastCGIServer, w http.ResponseWriter, bodycontent []byte, req *http.Request) { // GENERATE REPLY CONTENT HERE w.WriteHeader(statuscode) // internal server error w.Write(content) // report error as text ***TEMP*** } That will run on low-end hosting at Dreamhost. So there you are, in a modern language, with hard-compiled code with good performance, and reasonably good fault tolerance. Next step up would be a load balancer and redundant databases.