2
0
mirror of https://github.com/hibiken/asynq.git synced 2024-12-24 23:02:18 +08:00

Update all reference to asynqmon to Asynq CLI

This commit is contained in:
Ken Hibino 2020-04-12 16:49:49 -07:00
parent aafd8a5b74
commit cf61911a49
20 changed files with 74 additions and 74 deletions

6
.gitignore vendored
View File

@ -15,7 +15,7 @@
/examples /examples
# Ignore command binary # Ignore command binary
/tools/asynqmon/asynqmon /tools/asynq/asynq
# Ignore asynqmon config file # Ignore asynq config file
.asynqmon.* .asynq.*

View File

@ -213,7 +213,7 @@ Here's an example of running the `stats` command.
![Gif](/docs/assets/demo.gif) ![Gif](/docs/assets/demo.gif)
For details on how to use the tool, refer to the tool's [README](/tools/asynqmon/README.md). For details on how to use the tool, refer to the tool's [README](/tools/asynq/README.md).
## Installation ## Installation
@ -226,7 +226,7 @@ go get -u github.com/hibiken/asynq
To install the CLI tool, run the following command: To install the CLI tool, run the following command:
```sh ```sh
go get -u github.com/hibiken/asynq/tools/asynqmon go get -u github.com/hibiken/asynq/tools/asynq
``` ```
## Requirements ## Requirements
@ -245,7 +245,7 @@ Please see the [Contribution Guide](/CONTRIBUTING.md) before contributing.
- [Sidekiq](https://github.com/mperham/sidekiq) : Many of the design ideas are taken from sidekiq and its Web UI - [Sidekiq](https://github.com/mperham/sidekiq) : Many of the design ideas are taken from sidekiq and its Web UI
- [RQ](https://github.com/rq/rq) : Client APIs are inspired by rq library. - [RQ](https://github.com/rq/rq) : Client APIs are inspired by rq library.
- [Cobra](https://github.com/spf13/cobra) : Asynqmon CLI is built with cobra - [Cobra](https://github.com/spf13/cobra) : Asynq CLI is built with cobra
## License ## License

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

Before

Width:  |  Height:  |  Size: 582 KiB

After

Width:  |  Height:  |  Size: 582 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@ -1,6 +1,6 @@
# Asynqmon # Asynq CLI
Asynqmon is a command line tool to monitor the tasks managed by `asynq` package. Asynq CLI is a command line tool to monitor the tasks managed by `asynq` package.
## Table of Contents ## Table of Contents
@ -20,19 +20,19 @@ Asynqmon is a command line tool to monitor the tasks managed by `asynq` package.
In order to use the tool, compile it using the following command: In order to use the tool, compile it using the following command:
go get github.com/hibiken/asynq/tools/asynqmon go get github.com/hibiken/asynq/tools/asynq
This will create the asynqmon executable under your `$GOPATH/bin` directory. This will create the asynq executable under your `$GOPATH/bin` directory.
## Quickstart ## Quickstart
The tool has a few commands to inspect the state of tasks and queues. The tool has a few commands to inspect the state of tasks and queues.
Run `asynqmon help` to see all the available commands. Run `asynq help` to see all the available commands.
Asynqmon needs to connect to a redis-server to inspect the state of queues and tasks. Use flags to specify the options to connect to the redis-server used by your application. Asynq CLI needs to connect to a redis-server to inspect the state of queues and tasks. Use flags to specify the options to connect to the redis-server used by your application.
By default, Asynqmon will try to connect to a redis server running at `localhost:6379`. By default, CLI will try to connect to a redis server running at `localhost:6379`.
### Stats ### Stats
@ -40,11 +40,11 @@ Stats command gives the overview of the current state of tasks and queues. You c
Example: Example:
watch -n 3 asynqmon stats watch -n 3 asynq stats
This will run `asynqmon stats` command every 3 seconds. This will run `asynq stats` command every 3 seconds.
![Gif](/docs/assets/asynqmon_stats.gif) ![Gif](/docs/assets/asynq_stats.gif)
### History ### History
@ -54,9 +54,9 @@ By default, it shows the stats from the last 10 days. Use `--days` to specify th
Example: Example:
asynqmon history --days=30 asynq history --days=30
![Gif](/docs/assets/asynqmon_history.gif) ![Gif](/docs/assets/asynq_history.gif)
### Process Status ### Process Status
@ -64,9 +64,9 @@ PS (ProcessStatus) command shows the list of running worker processes.
Example: Example:
asynqmon ps asynq ps
![Gif](/docs/assets/asynqmon_ps.gif) ![Gif](/docs/assets/asynq_ps.gif)
### List ### List
@ -74,11 +74,11 @@ List command shows all tasks in the specified state in a table format
Example: Example:
asynqmon ls retry asynq ls retry
asynqmon ls scheduled asynq ls scheduled
asynqmon ls dead asynq ls dead
asynqmon ls enqueued:default asynq ls enqueued:default
asynqmon ls inprogress asynq ls inprogress
### Enqueue ### Enqueue
@ -88,13 +88,13 @@ Command `enq` takes a task ID and moves the task to **Enqueued** state. You can
Example: Example:
asynqmon enq d:1575732274:bnogo8gt6toe23vhef0g asynq enq d:1575732274:bnogo8gt6toe23vhef0g
Command `enqall` moves all tasks to **Enqueued** state from the specified state. Command `enqall` moves all tasks to **Enqueued** state from the specified state.
Example: Example:
asynqmon enqall retry asynq enqall retry
Running the above command will move all **Retry** tasks to **Enqueued** state. Running the above command will move all **Retry** tasks to **Enqueued** state.
@ -106,13 +106,13 @@ Command `del` takes a task ID and deletes the task. You can obtain the task ID b
Example: Example:
asynqmon del r:1575732274:bnogo8gt6toe23vhef0g asynq del r:1575732274:bnogo8gt6toe23vhef0g
Command `delall` deletes all tasks which are in the specified state. Command `delall` deletes all tasks which are in the specified state.
Example: Example:
asynqmon delall retry asynq delall retry
Running the above command will delete all **Retry** tasks. Running the above command will delete all **Retry** tasks.
@ -124,13 +124,13 @@ Command `kill` takes a task ID and kills the task. You can obtain the task ID by
Example: Example:
asynqmon kill r:1575732274:bnogo8gt6toe23vhef0g asynq kill r:1575732274:bnogo8gt6toe23vhef0g
Command `killall` kills all tasks which are in the specified state. Command `killall` kills all tasks which are in the specified state.
Example: Example:
asynqmon killall retry asynq killall retry
Running the above command will move all **Retry** tasks to **Dead** state. Running the above command will move all **Retry** tasks to **Dead** state.
@ -144,15 +144,15 @@ Handler implementation needs to be context aware in order to actually stop proce
Example: Example:
asynqmon cancel bnogo8gt6toe23vhef0g asynq cancel bnogo8gt6toe23vhef0g
## Config File ## Config File
You can use a config file to set default values for the flags. You can use a config file to set default values for the flags.
This is useful, for example when you have to connect to a remote redis server. This is useful, for example when you have to connect to a remote redis server.
By default, `asynqmon` will try to read config file located in By default, `asynq` will try to read config file located in
`$HOME/.asynqmon.(yaml|json)`. You can specify the file location via `--config` flag. `$HOME/.asynq.(yaml|json)`. You can specify the file location via `--config` flag.
Config file example: Config file example:

View File

@ -18,17 +18,17 @@ import (
var cancelCmd = &cobra.Command{ var cancelCmd = &cobra.Command{
Use: "cancel [task id]", Use: "cancel [task id]",
Short: "Sends a cancelation signal to the goroutine processing the specified task", Short: "Sends a cancelation signal to the goroutine processing the specified task",
Long: `Cancel (asynqmon cancel) will send a cancelation signal to the goroutine processing Long: `Cancel (asynq cancel) will send a cancelation signal to the goroutine processing
the specified task. the specified task.
The command takes one argument which specifies the task to cancel. The command takes one argument which specifies the task to cancel.
The task should be in in-progress state. The task should be in in-progress state.
Identifier for a task should be obtained by running "asynqmon ls" command. Identifier for a task should be obtained by running "asynq ls" command.
Handler implementation needs to be context aware for cancelation signal to Handler implementation needs to be context aware for cancelation signal to
actually cancel the processing. actually cancel the processing.
Example: asynqmon cancel bnogo8gt6toe23vhef0g`, Example: asynq cancel bnogo8gt6toe23vhef0g`,
Args: cobra.ExactArgs(1), Args: cobra.ExactArgs(1),
Run: cancel, Run: cancel,
} }

View File

@ -18,13 +18,13 @@ import (
var delCmd = &cobra.Command{ var delCmd = &cobra.Command{
Use: "del [task id]", Use: "del [task id]",
Short: "Deletes a task given an identifier", Short: "Deletes a task given an identifier",
Long: `Del (asynqmon del) will delete a task given an identifier. Long: `Del (asynq del) will delete a task given an identifier.
The command takes one argument which specifies the task to delete. The command takes one argument which specifies the task to delete.
The task should be in either scheduled, retry or dead state. The task should be in either scheduled, retry or dead state.
Identifier for a task should be obtained by running "asynqmon ls" command. Identifier for a task should be obtained by running "asynq ls" command.
Example: asynqmon enq d:1575732274:bnogo8gt6toe23vhef0g`, Example: asynq enq d:1575732274:bnogo8gt6toe23vhef0g`,
Args: cobra.ExactArgs(1), Args: cobra.ExactArgs(1),
Run: del, Run: del,
} }

View File

@ -20,11 +20,11 @@ var delallValidArgs = []string{"scheduled", "retry", "dead"}
var delallCmd = &cobra.Command{ var delallCmd = &cobra.Command{
Use: "delall [state]", Use: "delall [state]",
Short: "Deletes all tasks in the specified state", Short: "Deletes all tasks in the specified state",
Long: `Delall (asynqmon delall) will delete all tasks in the specified state. Long: `Delall (asynq delall) will delete all tasks in the specified state.
The argument should be one of "scheduled", "retry", or "dead". The argument should be one of "scheduled", "retry", or "dead".
Example: asynqmon delall dead -> Deletes all dead tasks`, Example: asynq delall dead -> Deletes all dead tasks`,
ValidArgs: delallValidArgs, ValidArgs: delallValidArgs,
Args: cobra.ExactValidArgs(1), Args: cobra.ExactValidArgs(1),
Run: delall, Run: delall,
@ -60,7 +60,7 @@ func delall(cmd *cobra.Command, args []string) {
case "dead": case "dead":
err = r.DeleteAllDeadTasks() err = r.DeleteAllDeadTasks()
default: default:
fmt.Printf("error: `asynqmon delall [state]` only accepts %v as the argument.\n", delallValidArgs) fmt.Printf("error: `asynq delall [state]` only accepts %v as the argument.\n", delallValidArgs)
os.Exit(1) os.Exit(1)
} }
if err != nil { if err != nil {

View File

@ -18,16 +18,16 @@ import (
var enqCmd = &cobra.Command{ var enqCmd = &cobra.Command{
Use: "enq [task id]", Use: "enq [task id]",
Short: "Enqueues a task given an identifier", Short: "Enqueues a task given an identifier",
Long: `Enq (asynqmon enq) will enqueue a task given an identifier. Long: `Enq (asynq enq) will enqueue a task given an identifier.
The command takes one argument which specifies the task to enqueue. The command takes one argument which specifies the task to enqueue.
The task should be in either scheduled, retry or dead state. The task should be in either scheduled, retry or dead state.
Identifier for a task should be obtained by running "asynqmon ls" command. Identifier for a task should be obtained by running "asynq ls" command.
The task enqueued by this command will be processed as soon as the task The task enqueued by this command will be processed as soon as the task
gets dequeued by a processor. gets dequeued by a processor.
Example: asynqmon enq d:1575732274:bnogo8gt6toe23vhef0g`, Example: asynq enq d:1575732274:bnogo8gt6toe23vhef0g`,
Args: cobra.ExactArgs(1), Args: cobra.ExactArgs(1),
Run: enq, Run: enq,
} }

View File

@ -20,14 +20,14 @@ var enqallValidArgs = []string{"scheduled", "retry", "dead"}
var enqallCmd = &cobra.Command{ var enqallCmd = &cobra.Command{
Use: "enqall [state]", Use: "enqall [state]",
Short: "Enqueues all tasks in the specified state", Short: "Enqueues all tasks in the specified state",
Long: `Enqall (asynqmon enqall) will enqueue all tasks in the specified state. Long: `Enqall (asynq enqall) will enqueue all tasks in the specified state.
The argument should be one of "scheduled", "retry", or "dead". The argument should be one of "scheduled", "retry", or "dead".
The tasks enqueued by this command will be processed as soon as it The tasks enqueued by this command will be processed as soon as it
gets dequeued by a processor. gets dequeued by a processor.
Example: asynqmon enqall dead -> Enqueues all dead tasks`, Example: asynq enqall dead -> Enqueues all dead tasks`,
ValidArgs: enqallValidArgs, ValidArgs: enqallValidArgs,
Args: cobra.ExactValidArgs(1), Args: cobra.ExactValidArgs(1),
Run: enqall, Run: enqall,
@ -64,7 +64,7 @@ func enqall(cmd *cobra.Command, args []string) {
case "dead": case "dead":
n, err = r.EnqueueAllDeadTasks() n, err = r.EnqueueAllDeadTasks()
default: default:
fmt.Printf("error: `asynqmon enqall [state]` only accepts %v as the argument.\n", enqallValidArgs) fmt.Printf("error: `asynq enqall [state]` only accepts %v as the argument.\n", enqallValidArgs)
os.Exit(1) os.Exit(1)
} }
if err != nil { if err != nil {

View File

@ -22,12 +22,12 @@ var days int
var historyCmd = &cobra.Command{ var historyCmd = &cobra.Command{
Use: "history", Use: "history",
Short: "Shows historical aggregate data", Short: "Shows historical aggregate data",
Long: `History (asynqmon history) will show the number of processed and failed tasks Long: `History (asynq history) will show the number of processed and failed tasks
from the last x days. from the last x days.
By default, it will show the data from the last 10 days. By default, it will show the data from the last 10 days.
Example: asynqmon history -x=30 -> Shows stats from the last 30 days`, Example: asynq history -x=30 -> Shows stats from the last 30 days`,
Args: cobra.NoArgs, Args: cobra.NoArgs,
Run: history, Run: history,
} }

View File

@ -18,13 +18,13 @@ import (
var killCmd = &cobra.Command{ var killCmd = &cobra.Command{
Use: "kill [task id]", Use: "kill [task id]",
Short: "Kills a task given an identifier", Short: "Kills a task given an identifier",
Long: `Kill (asynqmon kill) will put a task in dead state given an identifier. Long: `Kill (asynq kill) will put a task in dead state given an identifier.
The command takes one argument which specifies the task to kill. The command takes one argument which specifies the task to kill.
The task should be in either scheduled or retry state. The task should be in either scheduled or retry state.
Identifier for a task should be obtained by running "asynqmon ls" command. Identifier for a task should be obtained by running "asynq ls" command.
Example: asynqmon kill r:1575732274:bnogo8gt6toe23vhef0g`, Example: asynq kill r:1575732274:bnogo8gt6toe23vhef0g`,
Args: cobra.ExactArgs(1), Args: cobra.ExactArgs(1),
Run: kill, Run: kill,
} }

View File

@ -20,11 +20,11 @@ var killallValidArgs = []string{"scheduled", "retry"}
var killallCmd = &cobra.Command{ var killallCmd = &cobra.Command{
Use: "killall [state]", Use: "killall [state]",
Short: "Kills all tasks in the specified state", Short: "Kills all tasks in the specified state",
Long: `Killall (asynqmon killall) will update all tasks from the specified state to dead state. Long: `Killall (asynq killall) will update all tasks from the specified state to dead state.
The argument should be either "scheduled" or "retry". The argument should be either "scheduled" or "retry".
Example: asynqmon killall retry -> Update all retry tasks to dead tasks`, Example: asynq killall retry -> Update all retry tasks to dead tasks`,
ValidArgs: killallValidArgs, ValidArgs: killallValidArgs,
Args: cobra.ExactValidArgs(1), Args: cobra.ExactValidArgs(1),
Run: killall, Run: killall,
@ -59,7 +59,7 @@ func killall(cmd *cobra.Command, args []string) {
case "retry": case "retry":
n, err = r.KillAllRetryTasks() n, err = r.KillAllRetryTasks()
default: default:
fmt.Printf("error: `asynqmon killall [state]` only accepts %v as the argument.\n", killallValidArgs) fmt.Printf("error: `asynq killall [state]` only accepts %v as the argument.\n", killallValidArgs)
os.Exit(1) os.Exit(1)
} }
if err != nil { if err != nil {

View File

@ -25,19 +25,19 @@ var lsValidArgs = []string{"enqueued", "inprogress", "scheduled", "retry", "dead
var lsCmd = &cobra.Command{ var lsCmd = &cobra.Command{
Use: "ls [state]", Use: "ls [state]",
Short: "Lists tasks in the specified state", Short: "Lists tasks in the specified state",
Long: `Ls (asynqmon ls) will list all tasks in the specified state in a table format. Long: `Ls (asynq ls) will list all tasks in the specified state in a table format.
The command takes one argument which specifies the state of tasks. The command takes one argument which specifies the state of tasks.
The argument value should be one of "enqueued", "inprogress", "scheduled", The argument value should be one of "enqueued", "inprogress", "scheduled",
"retry", or "dead". "retry", or "dead".
Example: Example:
asynqmon ls dead -> Lists all tasks in dead state asynq ls dead -> Lists all tasks in dead state
Enqueued tasks requires a queue name after ":" Enqueued tasks requires a queue name after ":"
Example: Example:
asynqmon ls enqueued:default -> List tasks from default queue asynq ls enqueued:default -> List tasks from default queue
asynqmon ls enqueued:critical -> List tasks from critical queue asynq ls enqueued:critical -> List tasks from critical queue
`, `,
Args: cobra.ExactValidArgs(1), Args: cobra.ExactValidArgs(1),
Run: ls, Run: ls,
@ -72,7 +72,7 @@ func ls(cmd *cobra.Command, args []string) {
switch parts[0] { switch parts[0] {
case "enqueued": case "enqueued":
if len(parts) != 2 { if len(parts) != 2 {
fmt.Printf("error: Missing queue name\n`asynqmon ls enqueued:[queue name]`\n") fmt.Printf("error: Missing queue name\n`asynq ls enqueued:[queue name]`\n")
os.Exit(1) os.Exit(1)
} }
listEnqueued(r, parts[1]) listEnqueued(r, parts[1])
@ -85,7 +85,7 @@ func ls(cmd *cobra.Command, args []string) {
case "dead": case "dead":
listDead(r) listDead(r)
default: default:
fmt.Printf("error: `asynqmon ls [state]`\nonly accepts %v as the argument.\n", lsValidArgs) fmt.Printf("error: `asynq ls [state]`\nonly accepts %v as the argument.\n", lsValidArgs)
os.Exit(1) os.Exit(1)
} }
} }

View File

@ -22,7 +22,7 @@ import (
var psCmd = &cobra.Command{ var psCmd = &cobra.Command{
Use: "ps", Use: "ps",
Short: "Shows all background worker processes", Short: "Shows all background worker processes",
Long: `Ps (asynqmon ps) will show all background worker processes Long: `Ps (asynq ps) will show all background worker processes
backed by the specified redis instance. backed by the specified redis instance.
The command shows the following for each process: The command shows the following for each process:

View File

@ -18,11 +18,11 @@ import (
var rmqCmd = &cobra.Command{ var rmqCmd = &cobra.Command{
Use: "rmq [queue name]", Use: "rmq [queue name]",
Short: "Removes the specified queue", Short: "Removes the specified queue",
Long: `Rmq (asynqmon rmq) will remove the specified queue. Long: `Rmq (asynq rmq) will remove the specified queue.
By default, it will remove the queue only if it's empty. By default, it will remove the queue only if it's empty.
Use --force option to override this behavior. Use --force option to override this behavior.
Example: asynqmon rmq low -> Removes "low" queue`, Example: asynq rmq low -> Removes "low" queue`,
Args: cobra.ExactValidArgs(1), Args: cobra.ExactValidArgs(1),
Run: rmq, Run: rmq,
} }
@ -44,7 +44,7 @@ func rmq(cmd *cobra.Command, args []string) {
err := r.RemoveQueue(args[0], rmqForce) err := r.RemoveQueue(args[0], rmqForce)
if err != nil { if err != nil {
if _, ok := err.(*rdb.ErrQueueNotEmpty); ok { if _, ok := err.(*rdb.ErrQueueNotEmpty); ok {
fmt.Printf("error: %v\nIf you are sure you want to delete it, run 'asynqmon rmq --force %s'\n", err, args[0]) fmt.Printf("error: %v\nIf you are sure you want to delete it, run 'asynq rmq --force %s'\n", err, args[0])
os.Exit(1) os.Exit(1)
} }
fmt.Printf("error: %v", err) fmt.Printf("error: %v", err)

View File

@ -26,9 +26,9 @@ var password string
// rootCmd represents the base command when called without any subcommands // rootCmd represents the base command when called without any subcommands
var rootCmd = &cobra.Command{ var rootCmd = &cobra.Command{
Use: "asynqmon", Use: "asynq",
Short: "A monitoring tool for asynq queues", Short: "A monitoring tool for asynq queues",
Long: `Asynqmon is a montoring CLI to inspect tasks and queues managed by asynq.`, Long: `Asynq is a montoring CLI to inspect tasks and queues managed by asynq.`,
} }
// Execute adds all child commands to the root command and sets flags appropriately. // Execute adds all child commands to the root command and sets flags appropriately.
@ -43,7 +43,7 @@ func Execute() {
func init() { func init() {
cobra.OnInitialize(initConfig) cobra.OnInitialize(initConfig)
rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file to set flag defaut values (default is $HOME/.asynqmon.yaml)") rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file to set flag defaut values (default is $HOME/.asynq.yaml)")
rootCmd.PersistentFlags().StringVarP(&uri, "uri", "u", "127.0.0.1:6379", "redis server URI") rootCmd.PersistentFlags().StringVarP(&uri, "uri", "u", "127.0.0.1:6379", "redis server URI")
rootCmd.PersistentFlags().IntVarP(&db, "db", "n", 0, "redis database number (default is 0)") rootCmd.PersistentFlags().IntVarP(&db, "db", "n", 0, "redis database number (default is 0)")
rootCmd.PersistentFlags().StringVarP(&password, "password", "p", "", "password to use when connecting to redis server") rootCmd.PersistentFlags().StringVarP(&password, "password", "p", "", "password to use when connecting to redis server")
@ -65,9 +65,9 @@ func initConfig() {
os.Exit(1) os.Exit(1)
} }
// Search config in home directory with name ".asynqmon" (without extension). // Search config in home directory with name ".asynq" (without extension).
viper.AddConfigPath(home) viper.AddConfigPath(home)
viper.SetConfigName(".asynqmon") viper.SetConfigName(".asynq")
} }
viper.AutomaticEnv() // read in environment variables that match viper.AutomaticEnv() // read in environment variables that match

View File

@ -33,7 +33,7 @@ Specifically, the command shows the following:
To monitor the tasks continuously, it's recommended that you run this To monitor the tasks continuously, it's recommended that you run this
command in conjunction with the watch command. command in conjunction with the watch command.
Example: watch -n 3 asynqmon stats -> Shows current state of tasks every three seconds`, Example: watch -n 3 asynq stats -> Shows current state of tasks every three seconds`,
Args: cobra.NoArgs, Args: cobra.NoArgs,
Run: stats, Run: stats,
} }

View File

@ -20,7 +20,7 @@ import (
var workersCmd = &cobra.Command{ var workersCmd = &cobra.Command{
Use: "workers", Use: "workers",
Short: "Shows all running workers information", Short: "Shows all running workers information",
Long: `Workers (asynqmon workers) will show all running workers information. Long: `Workers (asynq workers) will show all running workers information.
The command shows the following for each worker: The command shows the following for each worker:
* Process in which the worker is running * Process in which the worker is running