diff --git a/.gitignore b/.gitignore index 9846a9d..7c03ff8 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ /examples # Ignore command binary -/tools/asynqmon/asynqmon +/tools/asynq/asynq -# Ignore asynqmon config file -.asynqmon.* \ No newline at end of file +# Ignore asynq config file +.asynq.* \ No newline at end of file diff --git a/README.md b/README.md index 9e243cb..710ed78 100644 --- a/README.md +++ b/README.md @@ -213,7 +213,7 @@ Here's an example of running the `stats` command. ![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 @@ -226,7 +226,7 @@ go get -u github.com/hibiken/asynq To install the CLI tool, run the following command: ```sh -go get -u github.com/hibiken/asynq/tools/asynqmon +go get -u github.com/hibiken/asynq/tools/asynq ``` ## 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 - [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 diff --git a/docs/assets/asynqmon_history.gif b/docs/assets/asynq_history.gif similarity index 100% rename from docs/assets/asynqmon_history.gif rename to docs/assets/asynq_history.gif diff --git a/docs/assets/asynqmon_ps.gif b/docs/assets/asynq_ps.gif similarity index 100% rename from docs/assets/asynqmon_ps.gif rename to docs/assets/asynq_ps.gif diff --git a/docs/assets/asynqmon_stats.gif b/docs/assets/asynq_stats.gif similarity index 100% rename from docs/assets/asynqmon_stats.gif rename to docs/assets/asynq_stats.gif diff --git a/tools/asynq/README.md b/tools/asynq/README.md index 49f1b2c..efa02de 100644 --- a/tools/asynq/README.md +++ b/tools/asynq/README.md @@ -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 @@ -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: - 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 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 @@ -40,11 +40,11 @@ Stats command gives the overview of the current state of tasks and queues. You c 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 @@ -54,9 +54,9 @@ By default, it shows the stats from the last 10 days. Use `--days` to specify th Example: - asynqmon history --days=30 + asynq history --days=30 -![Gif](/docs/assets/asynqmon_history.gif) +![Gif](/docs/assets/asynq_history.gif) ### Process Status @@ -64,9 +64,9 @@ PS (ProcessStatus) command shows the list of running worker processes. Example: - asynqmon ps + asynq ps -![Gif](/docs/assets/asynqmon_ps.gif) +![Gif](/docs/assets/asynq_ps.gif) ### List @@ -74,11 +74,11 @@ List command shows all tasks in the specified state in a table format Example: - asynqmon ls retry - asynqmon ls scheduled - asynqmon ls dead - asynqmon ls enqueued:default - asynqmon ls inprogress + asynq ls retry + asynq ls scheduled + asynq ls dead + asynq ls enqueued:default + asynq ls inprogress ### Enqueue @@ -88,13 +88,13 @@ Command `enq` takes a task ID and moves the task to **Enqueued** state. You can Example: - asynqmon enq d:1575732274:bnogo8gt6toe23vhef0g + asynq enq d:1575732274:bnogo8gt6toe23vhef0g Command `enqall` moves all tasks to **Enqueued** state from the specified state. Example: - asynqmon enqall retry + asynq enqall retry 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: - asynqmon del r:1575732274:bnogo8gt6toe23vhef0g + asynq del r:1575732274:bnogo8gt6toe23vhef0g Command `delall` deletes all tasks which are in the specified state. Example: - asynqmon delall retry + asynq delall retry 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: - asynqmon kill r:1575732274:bnogo8gt6toe23vhef0g + asynq kill r:1575732274:bnogo8gt6toe23vhef0g Command `killall` kills all tasks which are in the specified state. Example: - asynqmon killall retry + asynq killall retry 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: - asynqmon cancel bnogo8gt6toe23vhef0g + asynq cancel bnogo8gt6toe23vhef0g ## Config File 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. -By default, `asynqmon` will try to read config file located in -`$HOME/.asynqmon.(yaml|json)`. You can specify the file location via `--config` flag. +By default, `asynq` will try to read config file located in +`$HOME/.asynq.(yaml|json)`. You can specify the file location via `--config` flag. Config file example: diff --git a/tools/asynq/cmd/cancel.go b/tools/asynq/cmd/cancel.go index 772e8d1..56aa122 100644 --- a/tools/asynq/cmd/cancel.go +++ b/tools/asynq/cmd/cancel.go @@ -18,17 +18,17 @@ import ( var cancelCmd = &cobra.Command{ Use: "cancel [task id]", 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 command takes one argument which specifies the task to cancel. 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 actually cancel the processing. -Example: asynqmon cancel bnogo8gt6toe23vhef0g`, +Example: asynq cancel bnogo8gt6toe23vhef0g`, Args: cobra.ExactArgs(1), Run: cancel, } diff --git a/tools/asynq/cmd/del.go b/tools/asynq/cmd/del.go index 913a29e..e5db6a1 100644 --- a/tools/asynq/cmd/del.go +++ b/tools/asynq/cmd/del.go @@ -18,13 +18,13 @@ import ( var delCmd = &cobra.Command{ Use: "del [task id]", 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 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), Run: del, } diff --git a/tools/asynq/cmd/delall.go b/tools/asynq/cmd/delall.go index 476c0f9..004d403 100644 --- a/tools/asynq/cmd/delall.go +++ b/tools/asynq/cmd/delall.go @@ -20,11 +20,11 @@ var delallValidArgs = []string{"scheduled", "retry", "dead"} var delallCmd = &cobra.Command{ Use: "delall [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". -Example: asynqmon delall dead -> Deletes all dead tasks`, +Example: asynq delall dead -> Deletes all dead tasks`, ValidArgs: delallValidArgs, Args: cobra.ExactValidArgs(1), Run: delall, @@ -60,7 +60,7 @@ func delall(cmd *cobra.Command, args []string) { case "dead": err = r.DeleteAllDeadTasks() 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) } if err != nil { diff --git a/tools/asynq/cmd/enq.go b/tools/asynq/cmd/enq.go index f47d9c6..9838461 100644 --- a/tools/asynq/cmd/enq.go +++ b/tools/asynq/cmd/enq.go @@ -18,16 +18,16 @@ import ( var enqCmd = &cobra.Command{ Use: "enq [task id]", 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 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 gets dequeued by a processor. -Example: asynqmon enq d:1575732274:bnogo8gt6toe23vhef0g`, +Example: asynq enq d:1575732274:bnogo8gt6toe23vhef0g`, Args: cobra.ExactArgs(1), Run: enq, } diff --git a/tools/asynq/cmd/enqall.go b/tools/asynq/cmd/enqall.go index 27099c7..3e4913a 100644 --- a/tools/asynq/cmd/enqall.go +++ b/tools/asynq/cmd/enqall.go @@ -20,14 +20,14 @@ var enqallValidArgs = []string{"scheduled", "retry", "dead"} var enqallCmd = &cobra.Command{ Use: "enqall [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 tasks enqueued by this command will be processed as soon as it gets dequeued by a processor. -Example: asynqmon enqall dead -> Enqueues all dead tasks`, +Example: asynq enqall dead -> Enqueues all dead tasks`, ValidArgs: enqallValidArgs, Args: cobra.ExactValidArgs(1), Run: enqall, @@ -64,7 +64,7 @@ func enqall(cmd *cobra.Command, args []string) { case "dead": n, err = r.EnqueueAllDeadTasks() 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) } if err != nil { diff --git a/tools/asynq/cmd/history.go b/tools/asynq/cmd/history.go index 9c8b413..764504e 100644 --- a/tools/asynq/cmd/history.go +++ b/tools/asynq/cmd/history.go @@ -22,12 +22,12 @@ var days int var historyCmd = &cobra.Command{ Use: "history", 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. 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, Run: history, } diff --git a/tools/asynq/cmd/kill.go b/tools/asynq/cmd/kill.go index 6351562..a2cc438 100644 --- a/tools/asynq/cmd/kill.go +++ b/tools/asynq/cmd/kill.go @@ -18,13 +18,13 @@ import ( var killCmd = &cobra.Command{ Use: "kill [task id]", 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 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), Run: kill, } diff --git a/tools/asynq/cmd/killall.go b/tools/asynq/cmd/killall.go index c8345b0..ab6bb13 100644 --- a/tools/asynq/cmd/killall.go +++ b/tools/asynq/cmd/killall.go @@ -20,11 +20,11 @@ var killallValidArgs = []string{"scheduled", "retry"} var killallCmd = &cobra.Command{ Use: "killall [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". -Example: asynqmon killall retry -> Update all retry tasks to dead tasks`, +Example: asynq killall retry -> Update all retry tasks to dead tasks`, ValidArgs: killallValidArgs, Args: cobra.ExactValidArgs(1), Run: killall, @@ -59,7 +59,7 @@ func killall(cmd *cobra.Command, args []string) { case "retry": n, err = r.KillAllRetryTasks() 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) } if err != nil { diff --git a/tools/asynq/cmd/ls.go b/tools/asynq/cmd/ls.go index 3bec832..8c82231 100644 --- a/tools/asynq/cmd/ls.go +++ b/tools/asynq/cmd/ls.go @@ -25,19 +25,19 @@ var lsValidArgs = []string{"enqueued", "inprogress", "scheduled", "retry", "dead var lsCmd = &cobra.Command{ Use: "ls [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 argument value should be one of "enqueued", "inprogress", "scheduled", "retry", or "dead". 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 ":" Example: -asynqmon ls enqueued:default -> List tasks from default queue -asynqmon ls enqueued:critical -> List tasks from critical queue +asynq ls enqueued:default -> List tasks from default queue +asynq ls enqueued:critical -> List tasks from critical queue `, Args: cobra.ExactValidArgs(1), Run: ls, @@ -72,7 +72,7 @@ func ls(cmd *cobra.Command, args []string) { switch parts[0] { case "enqueued": 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) } listEnqueued(r, parts[1]) @@ -85,7 +85,7 @@ func ls(cmd *cobra.Command, args []string) { case "dead": listDead(r) 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) } } diff --git a/tools/asynq/cmd/ps.go b/tools/asynq/cmd/ps.go index c4c3867..08f409c 100644 --- a/tools/asynq/cmd/ps.go +++ b/tools/asynq/cmd/ps.go @@ -22,7 +22,7 @@ import ( var psCmd = &cobra.Command{ Use: "ps", 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. The command shows the following for each process: diff --git a/tools/asynq/cmd/rmq.go b/tools/asynq/cmd/rmq.go index 1292af5..e62a883 100644 --- a/tools/asynq/cmd/rmq.go +++ b/tools/asynq/cmd/rmq.go @@ -18,11 +18,11 @@ import ( var rmqCmd = &cobra.Command{ Use: "rmq [queue name]", 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. 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), Run: rmq, } @@ -44,7 +44,7 @@ func rmq(cmd *cobra.Command, args []string) { err := r.RemoveQueue(args[0], rmqForce) if err != nil { 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) } fmt.Printf("error: %v", err) diff --git a/tools/asynq/cmd/root.go b/tools/asynq/cmd/root.go index e037005..8056ac5 100644 --- a/tools/asynq/cmd/root.go +++ b/tools/asynq/cmd/root.go @@ -26,9 +26,9 @@ var password string // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ - Use: "asynqmon", + Use: "asynq", 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. @@ -43,7 +43,7 @@ func Execute() { func init() { 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().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") @@ -65,9 +65,9 @@ func initConfig() { 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.SetConfigName(".asynqmon") + viper.SetConfigName(".asynq") } viper.AutomaticEnv() // read in environment variables that match diff --git a/tools/asynq/cmd/stats.go b/tools/asynq/cmd/stats.go index 7c1e5df..5ffd026 100644 --- a/tools/asynq/cmd/stats.go +++ b/tools/asynq/cmd/stats.go @@ -33,7 +33,7 @@ Specifically, the command shows the following: To monitor the tasks continuously, it's recommended that you run this 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, Run: stats, } diff --git a/tools/asynq/cmd/workers.go b/tools/asynq/cmd/workers.go index e91bd06..9126bcc 100644 --- a/tools/asynq/cmd/workers.go +++ b/tools/asynq/cmd/workers.go @@ -20,7 +20,7 @@ import ( var workersCmd = &cobra.Command{ Use: "workers", 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: * Process in which the worker is running