go_reuseport

by kavu

Brings SO_REUSEPORT into your Go server

465 Stars 63 Forks Last release: Not found MIT License 63 Commits 6 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

GO_REUSEPORT

Build Status codecov GoDoc

GO_REUSEPORT is a little expirement to create a

net.Listener
that supports SO_REUSEPORT socket option.

For now, Darwin and Linux (from 3.9) systems are supported. I'll be pleased if you'll test other systems and tell me the results. documentation on godoc.org.

Example

package main

import ( "fmt" "html" "net/http" "os" "runtime" "github.com/kavu/go_reuseport" )

func main() { listener, err := reuseport.Listen("tcp", "localhost:8881") if err != nil { panic(err) } defer listener.Close()

server := &http.Server{} http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Println(os.Getgid()) fmt.Fprintf(w, "Hello, %q\n", html.EscapeString(r.URL.Path)) })

panic(server.Serve(listener)) }

Now you can run several instances of this tiny server without

Address already in use
errors.

Thanks

Inspired by Artur Siekielski post about

SO_REUSEPORT
.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.