Beego 使用教程 2:配置模块、Admin管理后台和定时任务

本文详细介绍了如何使用Beego框架进行配置管理,包括修改端口号、读取自定义配置;同时,展示了如何搭建Admin管理后台并启用监控;接着,通过实例讲解了如何设置和管理定时任务,包括开始、停止、删除任务的操作。Beego是一个用于Go编程的高性能Web框架,适用于RESTful API、web应用和后端服务开发。

beego 是一个用于Go编程语言的开源、高性能的 web 框架

beego 被用于在Go语言中企业应用程序的快速开发,包括RESTful API、web应用程序和后端服务。它的灵感来源于Tornado, Sinatra 和 Flask

beego 官网:http://beego.gocn.vip/

上面的 beego 官网如果访问不到,看这篇文章《beego 官网文档本地环境搭建》

注意:本文的 beego 文档使用的就是本地环境搭建的文档,因为官网文档已经不可用了

beego 官方 github 仓库:https://github.com/beego/beego

上一讲,讲了 beego 的项目创建,需要的朋友可以查看《beego 使用教程 1:项目创建》

这一讲,主要讲解beego 的配置、Admin管理后台和定时任务

目录

1、beego 配置模块

2、Admin 管理后台

3、定时任务

3.1、开始任务

3.2、多任务

3.3、停止任务

3.4、删除任务


1、beego 配置模块

Beego 默认会解析当前应用下的 conf/app.conf 文件

这里笔者使用手动创建 beego 项目的方式创建的项目

项目代码是上一讲手动方式创建的项目

在项目根目录下新建文件目录 conf

并在 conf 目录下新建文件 app.conf

下面为方便操作,笔者使用 GoLand 编辑器操作项目

使用 GoLand 打开项目根目录

app.conf 中有一些默认配置,如 httpport 可以修改项目端口号,项目端口号默认是8080

如下代码将项目端口号修改为 9090

httpport=9090

使用 GoLand 启动项目

可以在 main.go 上直接右键,选择 run 'go build main.go'

这种方式编译后的 exe文件会在默认的临时目录里

为方便看见,笔者修改编译后的exe文件到项目根目录,当然你可以不用修改,因为默认的临时目录在C盘,所以笔者想要修改它,这个修改只要修改一次就行,后面都会使用修改后的

还是在 main.go 上直接右键,选择 Modify Run Configuration...

修改 Output directory

选择项目根目录

点击 OK

然后在 main.go 上直接右键,选择 run 'go build main.go'

项目监听端口修改为9090

获取自定义配置

在app.conf 中添加自定义配置  workername=ShakeSpeare 

httpport=9090

workername=ShakeSpeare

在 main.go 中添加获取自定义配置代码

package main

import (
	"fmt"
	"github.com/beego/beego/v2/core/config"
	"github.com/beego/beego/v2/server/web"
)

func main() {
	//通过config获取自定义配置
	workername, _ := config.String("workername")
	fmt.Println(workername)
	web.Run()
}

运行项目

成功获取自定义配置

更多配置相关内容,可以查看 beego 文档

2、Admin 管理后台

默认 Admin 是关闭的,可以通过配置开启监控

在 main.go 中添加下面配置,开启 Admin

addr 和 port 可自定义 

web.BConfig.Listen.EnableAdmin = true
web.BConfig.Listen.AdminAddr = "localhost"
web.BConfig.Listen.AdminPort = 8088

main.go

package main

import (
	"fmt"
	"github.com/beego/beego/v2/core/config"
	"github.com/beego/beego/v2/server/web"
)

func main() {
	//通过config获取自定义配置
	workername, _ := config.String("workername")
	fmt.Println(workername)

	//开启 Admin 管理后台
	web.BConfig.Listen.EnableAdmin = true
	web.BConfig.Listen.AdminAddr = "localhost"
	web.BConfig.Listen.AdminPort = 8088

	web.Run()
}

运行项目后,通过浏览器访问 http://localhost:8088/

 可以看到监控页面

3、定时任务

3.1、开始任务

在项目根目录下新建 job 目录,然后在 job 目录下新建 demo.go

在 demo.go 中添加下面代码

package job

import (
	ctx "context"
	"fmt"
	"github.com/beego/beego/v2/task"
	"time"
)

func DemoTask() {
	//每隔4秒钟执行一次
	tk := task.NewTask("DemoTask1", "0/4 * * * * *", func(ctx ctx.Context) error {
		fmt.Println()
		str := fmt.Sprintf("%s%s", time.Now().Format("2006-01-02 15:04:05"), " tk1 运行")
		fmt.Println(str)
		return nil
	})
	task.AddTask("DemoTask1", tk)
	task.StartTask()
}

定时任务,使用 Cron表达式,每4秒钟执行一次

然后再 main.go 中添加下面代码

package main

import (
	"beego-demo/job"
	"fmt"
	"github.com/beego/beego/v2/core/config"
	"github.com/beego/beego/v2/server/web"
)

func main() {
	//通过config获取自定义配置
	workername, _ := config.String("workername")
	fmt.Println(workername)

	//执行定时任务
	job.DemoTask()

	//开启 Admin 管理后台
	web.BConfig.Listen.EnableAdmin = true
	web.BConfig.Listen.AdminAddr = "localhost"
	web.BConfig.Listen.AdminPort = 8088

	web.Run()
}

运行效果

3.2、多任务

main.go 中代码不变

在 job 目录下的 demo.go 中添加下面代码

package job

import (
	ctx "context"
	"fmt"
	"github.com/beego/beego/v2/task"
	"time"
)

func DemoTask() {
	//每隔4秒钟执行一次
	tk := task.NewTask("DemoTask1", "0/4 * * * * *", func(ctx ctx.Context) error {
		fmt.Println()
		str := fmt.Sprintf("%s%s", time.Now().Format("2006-01-02 15:04:05"), " tk1 运行")
		fmt.Println(str)
		return nil
	})
	task.AddTask("DemoTask1", tk)

	//每隔3秒钟执行一次
	tk2 := task.NewTask("DemoTask2", "0/3 * * * * *", func(ctx ctx.Context) error {
		fmt.Println()
		str := fmt.Sprintf("%s%s", time.Now().Format("2006-01-02 15:04:05"), " tk2 运行")
		fmt.Println(str)
		return nil
	})
	task.AddTask("DemoTask2", tk2)

	task.StartTask()
}

重新运行项目

通过 Beego Admin 查看定时任务

3.3、停止任务

调用 task.StopTask() 方法会停止任务,停止的是全部任务

修改  job 目录下的 demo.go 代码如下

package job

import (
	ctx "context"
	"fmt"
	"github.com/beego/beego/v2/task"
	"time"
)

func DemoTask() {
	//每隔4秒钟执行一次
	tk := task.NewTask("DemoTask1", "0/4 * * * * *", func(ctx ctx.Context) error {
		fmt.Println()
		str := fmt.Sprintf("%s%s", time.Now().Format("2006-01-02 15:04:05"), " tk1 运行")
		fmt.Println(str)
		return nil
	})
	task.AddTask("DemoTask1", tk)

	//每隔3秒钟执行一次
	tk2 := task.NewTask("DemoTask2", "0/3 * * * * *", func(ctx ctx.Context) error {
		fmt.Println()
		str := fmt.Sprintf("%s%s", time.Now().Format("2006-01-02 15:04:05"), " tk2 运行")
		fmt.Println(str)
		return nil
	})
	task.AddTask("DemoTask2", tk2)

	task.StartTask()

	//睡眠20秒钟后执行
	time.Sleep(time.Second * 20)
	fmt.Println(time.Now().String() + " 停止任务")

	//StopTask 方法会停止全部任务
	task.StopTask()
}

开始2个定时任务,20秒钟后,停止定时任务

为防止 time.Sleep(time.Second * 20) 阻塞主线程,我们将 main.go 修改为下面代码

package main

import (
	"beego-demo/job"
	"fmt"
	"github.com/beego/beego/v2/core/config"
	"github.com/beego/beego/v2/server/web"
)

func main() {
	//通过config获取自定义配置
	workername, _ := config.String("workername")
	fmt.Println(workername)

	//执行定时任务
	go job.DemoTask()

	//开启 Admin 管理后台
	web.BConfig.Listen.EnableAdmin = true
	web.BConfig.Listen.AdminAddr = "localhost"
	web.BConfig.Listen.AdminPort = 8088

	web.Run()
}

运行效果

3.4、删除任务

task.DeleteTask 方法通过任务名称删除任务

main.go 中代码不变

在 job 目录下的 demo.go 修改为下面代码

package job

import (
	ctx "context"
	"fmt"
	"github.com/beego/beego/v2/task"
	"time"
)

func DemoTask() {
	//每隔4秒钟执行一次
	tk := task.NewTask("DemoTask1", "0/4 * * * * *", func(ctx ctx.Context) error {
		fmt.Println()
		str := fmt.Sprintf("%s%s", time.Now().Format("2006-01-02 15:04:05"), " tk1 运行")
		fmt.Println(str)
		return nil
	})
	task.AddTask("DemoTask1", tk)

	//每隔3秒钟执行一次
	tk2 := task.NewTask("DemoTask2", "0/3 * * * * *", func(ctx ctx.Context) error {
		fmt.Println()
		str := fmt.Sprintf("%s%s", time.Now().Format("2006-01-02 15:04:05"), " tk2 运行")
		fmt.Println(str)
		return nil
	})
	task.AddTask("DemoTask2", tk2)

	task.StartTask()

	//睡眠20秒钟后执行
	time.Sleep(time.Second * 20)
	fmt.Println(time.Now().String() + " 删除任务 DemoTask2")

	//DeleteTask 方法通过任务名称删除任务
	task.DeleteTask("DemoTask2")
}

项目启动 20秒钟后删除定时任务 DemoTask2

运行效果

下一讲:《Beego 使用教程 3:Web 模块之路由》

至此完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世君子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值