Skip to content

Commit ab0b683

Browse files
committed
Several improvements and job print format
1 parent c65c67a commit ab0b683

File tree

7 files changed

+105
-25
lines changed

7 files changed

+105
-25
lines changed

cli/bury.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010

1111
type BuryCommand struct {
1212
Tube string `short:"t" long:"tube" description:"tube to bury jobs in." required:"true"`
13-
Num int `short:"n" long:"num" description:"number of jobs to bury."`
13+
Num int `short:"" long:"num" description:"number of jobs to bury."`
1414
Command
1515
}
1616

cli/command.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package cli
22

33
import (
4+
"fmt"
5+
6+
"github.com/agtorre/gocolorize"
47
"github.com/kr/beanstalk"
58
)
69

10+
var TitleStyle = gocolorize.NewColor("green")
11+
var InfoStyle = gocolorize.NewColor("yellow")
12+
713
type Command struct {
814
Host string `short:"h" long:"host" description:"beanstalkd host addr." required:"true" default:"localhost:11300"`
915

@@ -20,6 +26,35 @@ func (c *Command) Init() error {
2026
return nil
2127
}
2228

29+
func (c *Command) PrintJob(id uint64, body []byte) error {
30+
s, err := c.conn.StatsJob(id)
31+
if err != nil {
32+
return err
33+
}
34+
35+
fmt.Printf(
36+
"%s: %d, %s: %d, %s: %s, %s: %s, %s: %s, %s: %s\n"+
37+
"%s: %s, %s: %s, %s: %s, %s: %s, %s: %s\n"+
38+
"%s:\n%q\n",
39+
TitleStyle.Paint("id"), id,
40+
TitleStyle.Paint("length"), len(body),
41+
TitleStyle.Paint("priority"), s["pri"],
42+
TitleStyle.Paint("delay"), s["delay"],
43+
TitleStyle.Paint("age"), s["age"],
44+
TitleStyle.Paint("ttr"), s["ttr"],
45+
46+
InfoStyle.Paint("reserves"), s["reserves"],
47+
InfoStyle.Paint("releases"), s["releases"],
48+
InfoStyle.Paint("buries"), s["buries"],
49+
InfoStyle.Paint("kicks"), s["kicks"],
50+
InfoStyle.Paint("timeouts"), s["timeouts"],
51+
52+
InfoStyle.Paint("body"), body,
53+
)
54+
55+
return nil
56+
}
57+
2358
func (c *Command) GetStatsForTube(tube string) (*TubeStats, error) {
2459
t := &beanstalk.Tube{c.conn, tube}
2560
s, err := t.Stats()

cli/kick.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88

99
type KickCommand struct {
1010
Tube string `short:"t" long:"tube" description:"tube to kick jobs in." required:"true"`
11-
Num int `short:"n" long:"num" description:"number of jobs to kick."`
11+
Num int `short:"" long:"num" description:"number of jobs to kick."`
1212
Command
1313
}
1414

cli/peek.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package cli
22

33
import (
4-
"fmt"
5-
64
"github.com/kr/beanstalk"
75
)
86

97
type PeekCommand struct {
108
Tube string `short:"t" long:"tube" description:"tube to be tailed." required:"true"`
11-
State string `short:"s" long:"state" description:"peek from 'buried', 'ready' or 'delayed' queues." required:"true" default:"buried"`
9+
State string `short:"" long:"state" description:"peek from 'buried', 'ready' or 'delayed' queues." default:"buried"`
1210
Command
1311
}
1412

@@ -29,15 +27,21 @@ func (c *PeekCommand) Peek() error {
2927
var id uint64
3028
var body []byte
3129
var err error
32-
id, body, err = t.PeekBuried()
30+
31+
switch c.State {
32+
case "buried":
33+
id, body, err = t.PeekBuried()
34+
case "ready":
35+
id, body, err = t.PeekReady()
36+
case "delayed":
37+
id, body, err = t.PeekDelayed()
38+
}
39+
3340
if err != nil {
3441
return err
3542
}
3643

37-
fmt.Printf(
38-
"id: %d\nlen: %d\nbody: %q\n\n",
39-
id, len(body), body,
40-
)
44+
c.PrintJob(id, body)
4145

4246
return nil
4347
}

cli/put.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ func (c *PutCommand) Put() error {
3838
}
3939

4040
fmt.Printf(
41-
"Added job with id %d to %s with priority %d, delay %d, TTR %d\n",
42-
id, c.Tube, c.Priority, c.Delay, c.TTR,
41+
"Added job with id %d to %s with priority %d, delay %s, TTR %d\n",
42+
id, c.Tube, c.Priority, c.Delay.String(), c.TTR,
4343
)
4444

4545
return nil

cli/stats.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ func (c *StatsCommand) buildLineFromTubeStats(name string, s *TubeStats) []strin
6565
l := make([]string, 0)
6666

6767
l = append(l, name)
68-
l = append(l, addStyle(s.JobsBuried, 10, HighSeverity))
69-
l = append(l, addStyle(s.JobsDelayed, 10, NormalSeverity))
70-
l = append(l, addStyle(s.JobsReady, 10, NormalSeverity))
71-
l = append(l, addStyle(s.JobsReserved, 10, NormalSeverity))
72-
l = append(l, addStyle(s.JobsUrgent, 10, NormalSeverity))
73-
l = append(l, addStyle(s.Waiting, 10, LowSeverity))
74-
l = append(l, addStyle(s.TotalJobs, 10, LowSeverity))
68+
l = append(l, addStyle(s.JobsBuried, 8, HighSeverity))
69+
l = append(l, addStyle(s.JobsDelayed, 8, NormalSeverity))
70+
l = append(l, addStyle(s.JobsReady, 8, NormalSeverity))
71+
l = append(l, addStyle(s.JobsReserved, 8, NormalSeverity))
72+
l = append(l, addStyle(s.JobsUrgent, 8, NormalSeverity))
73+
l = append(l, addStyle(s.Waiting, 8, LowSeverity))
74+
l = append(l, addStyle(s.TotalJobs, 8, LowSeverity))
7575

7676
return l
7777
}

cli/tail.go

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package cli
22

33
import (
4+
"errors"
45
"fmt"
6+
"strings"
57
"time"
68

79
"github.com/kr/beanstalk"
810
)
911

12+
var TooManyErrorsError = errors.New("Too many errors")
13+
1014
type TailCommand struct {
11-
Tube string `short:"t" long:"tube" description:"tube to be tailed." required:"true"`
15+
Tube string `short:"t" long:"tube" description:"tube to be tailed." required:"true"`
16+
Action string `short:"" long:"action" description:"action to perform after reserver the job. (release, bury, delete)" default:"release"`
17+
1218
Command
1319
}
1420

@@ -27,18 +33,53 @@ func (c *TailCommand) Execute(args []string) error {
2733
func (c *TailCommand) Tail() error {
2834
ts := beanstalk.NewTubeSet(c.conn, c.Tube)
2935

36+
errors := 0
3037
for {
38+
if errors > 100 {
39+
return TooManyErrorsError
40+
}
41+
3142
id, body, err := ts.Reserve(time.Hour * 24)
3243
if err != nil {
44+
if err.Error() != "reserve-with-timeout: deadline soon" {
45+
errors++
46+
fmt.Println("Error", err)
47+
}
48+
49+
continue
50+
}
51+
52+
if err := c.PrintJob(id, body); err != nil {
53+
errors++
54+
fmt.Println("Error", err)
55+
continue
56+
}
57+
58+
if err := c.postPrintAction(id); err != nil {
3359
return err
3460
}
3561

36-
s, _ := c.conn.StatsJob(id)
62+
fmt.Println(strings.Repeat("-", 80))
63+
}
64+
65+
return nil
66+
}
67+
68+
func (c *TailCommand) postPrintAction(id uint64) error {
69+
var err error
3770

38-
fmt.Printf(
39-
"id: %d\nlen: %d\npriority: %s\nbody: %q\n\n",
40-
id, len(body), s["pri"], body,
41-
)
71+
switch c.Action {
72+
case "release":
73+
err = c.conn.Release(id, 1024, 0)
74+
case "bury":
75+
err = c.conn.Bury(id, 1024)
76+
case "delete":
77+
err = c.conn.Delete(id)
4278
}
4379

80+
if err != nil {
81+
return err
82+
}
83+
84+
return nil
4485
}

0 commit comments

Comments
 (0)