Make worker pool size, add autoscale option
This commit is contained in:
parent
e0eb526af5
commit
b0142de4a7
21
satan.go
21
satan.go
@ -19,6 +19,9 @@ type Satan struct {
|
|||||||
DaemonStats stats.Publisher
|
DaemonStats stats.Publisher
|
||||||
Logger *log.Logger
|
Logger *log.Logger
|
||||||
|
|
||||||
|
DefaultNumWorkers int
|
||||||
|
AutoScale bool
|
||||||
|
|
||||||
daemons []Daemon
|
daemons []Daemon
|
||||||
queue chan *task
|
queue chan *task
|
||||||
runtimeStats stats.Manager
|
runtimeStats stats.Manager
|
||||||
@ -57,10 +60,6 @@ type task struct {
|
|||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
|
||||||
defaultNumWorkers = 10
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
workerIndex uint64
|
workerIndex uint64
|
||||||
)
|
)
|
||||||
@ -68,11 +67,13 @@ var (
|
|||||||
// Summon creates a new instance of Satan.
|
// Summon creates a new instance of Satan.
|
||||||
func Summon() *Satan {
|
func Summon() *Satan {
|
||||||
return &Satan{
|
return &Satan{
|
||||||
Logger: log.New(os.Stdout, "[daemons] ", log.LstdFlags),
|
Logger: log.New(os.Stdout, "[daemons] ", log.LstdFlags),
|
||||||
queue: make(chan *task),
|
DefaultNumWorkers: 10,
|
||||||
runtimeStats: stats.NewBasicStats(),
|
AutoScale: false,
|
||||||
shutdownWorkers: make(chan struct{}),
|
queue: make(chan *task),
|
||||||
shutdownSystem: make(chan struct{}),
|
runtimeStats: stats.NewBasicStats(),
|
||||||
|
shutdownWorkers: make(chan struct{}),
|
||||||
|
shutdownSystem: make(chan struct{}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +93,7 @@ func (s *Satan) AddDaemon(d Daemon) {
|
|||||||
|
|
||||||
// StartDaemons starts all registered daemons.
|
// StartDaemons starts all registered daemons.
|
||||||
func (s *Satan) StartDaemons() {
|
func (s *Satan) StartDaemons() {
|
||||||
s.addWorkers(defaultNumWorkers)
|
s.addWorkers(s.DefaultNumWorkers)
|
||||||
}
|
}
|
||||||
|
|
||||||
// StopDaemons stops all running daemons.
|
// StopDaemons stops all running daemons.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user