feat: auto start workers

This commit is contained in:
Rogee
2024-12-16 16:59:48 +08:00
parent 66d0cd507c
commit 71c285b892
10 changed files with 133 additions and 5 deletions

View File

@@ -0,0 +1,17 @@
package middlewares
import (
"strings"
"github.com/gofiber/fiber/v3"
)
func (m *Middlewares) CheckUA(ctx fiber.Ctx) error {
keyword := strings.ToLower("MicroMessenger")
userAgent := ctx.GetReqHeaders()["User-Agent"][0]
if strings.Contains(userAgent, keyword) {
return ctx.SendString("")
}
return ctx.Next()
}

View File

@@ -2,7 +2,6 @@ package middlewares
import (
"github.com/gofiber/fiber/v3"
log "github.com/sirupsen/logrus"
)
func (f *Middlewares) DebugMode(c fiber.Ctx) error {
@@ -10,6 +9,5 @@ func (f *Middlewares) DebugMode(c fiber.Ctx) error {
// host := c.BaseURL()
// fmt.Println(strings.Split(c.Path(), "/"))
// return c.SendString("ABC" + c.Params("+"))
log.SetLevel(log.DebugLevel)
return c.Next()
}

View File

@@ -0,0 +1,31 @@
package workers
import (
"backend/modules/commands/store"
"backend/providers/storage"
"git.ipao.vip/rogeecn/atom"
"git.ipao.vip/rogeecn/atom/container"
"git.ipao.vip/rogeecn/atom/contracts"
"git.ipao.vip/rogeecn/atom/utils/opt"
)
func Provide(opts ...opt.Option) error {
if err := container.Container.Provide(func(
cmdStore *store.StoreMedias,
storage *storage.Config,
) (contracts.Initial, error) {
obj := &Controller{
cmdStore: cmdStore,
storage: storage,
}
if err := obj.Prepare(); err != nil {
return nil, err
}
return obj, nil
}, atom.GroupInitial); err != nil {
return err
}
return nil
}

View File

@@ -0,0 +1,39 @@
package workers
import (
"time"
"backend/modules/commands/store"
"backend/providers/storage"
_ "git.ipao.vip/rogeecn/atom"
_ "git.ipao.vip/rogeecn/atom/contracts"
"github.com/sirupsen/logrus"
)
// @provider:except contracts.Initial atom.GroupInitial
type Controller struct {
log *logrus.Entry `inject:"false"`
cmdStore *store.StoreMedias
storage *storage.Config
}
func (c *Controller) Prepare() error {
c.log = logrus.WithField("module", "workers.worker")
c.log.Info("start workers")
go c.store()
return nil
}
func (c *Controller) store() {
ticker := time.NewTicker(time.Minute * 5)
for range ticker.C {
c.log.WithField("action", "store").Info("start to run store")
if err := c.cmdStore.RunE(c.storage.Path); err != nil {
c.log.WithField("action", "store").WithError(err).Error("run store cmd failed")
}
}
}

View File

@@ -3,10 +3,12 @@ package http
import (
"path/filepath"
"backend/modules/commands/store"
"backend/modules/medias"
"backend/modules/middlewares"
"backend/modules/users"
wechatModule "backend/modules/wechat"
"backend/modules/workers"
"backend/providers/app"
"backend/providers/hashids"
"backend/providers/http"
@@ -49,6 +51,8 @@ func Command() atom.Option {
users.Provide,
medias.Provide,
wechatModule.Provide,
store.Provide,
workers.Provide,
)),
)
}
@@ -70,10 +74,12 @@ func Serve(cmd *cobra.Command, args []string) error {
if http.App.Mode == app.AppModeDevelopment {
log.SetLevel(log.DebugLevel)
}
engine := http.Service.Engine
mid := http.Middlewares
engine.Use(mid.DebugMode)
engine.Use(mid.CheckUA)
engine.Use(mid.ProcessResponse)
engine.Use(mid.WeChatVerify)

View File

@@ -0,0 +1,10 @@
services:
qvyun:
image: docker-af.hub.ipao.vip:88/rogeecn/qvyun:latest
restart: always
extra_hosts:
- "host.local:172.16.0.122"
volumes:
- /data:/app/processed
ports:
- 9600:9600

View File

@@ -0,0 +1,10 @@
services:
pg:
image: docker.hub.ipao.vip:88/postgres:15
restart: always
environment:
POSTGRES_PASSWORD: xixi0202
volumes:
- /opt/services/postgres/data:/var/lib/postgresql/data
ports:
- 5432:5432

View File

@@ -13,7 +13,6 @@ export default defineComponent({
},
setup(props) {
return {
copyCode,
}
}
})

View File

@@ -3,8 +3,8 @@
<van-back-top bottom="80" />
<van-list style="padding-bottom: 3em" v-model:loading="loading" :finished="finished"
:finished-text="bought ? '您还没有购买' : '没有更多了'" offset="100" @load="loadData">
<van-list style="padding-bottom: 3em" v-model:loading="loading" error-text="请求失败点击重新加载" :finished="finished"
v-model:error="error" :finished-text="bought ? '您还没有购买' : '没有更多了'" offset="100" @load="loadData">
<list-item-card v-for="item in items" :key="item" :item="item" :bought="bought" />
</van-list>
</template>
@@ -20,6 +20,7 @@ export default defineComponent({
setup(props) {
const search = ref("");
const items = ref([]);
const error = ref(false)
const loading = ref(false);
const finished = ref(false);
const pageLimit = ref(10);
@@ -69,6 +70,7 @@ export default defineComponent({
})
.catch((err) => {
console.error("ERROR", err);
error.value = true
})
.finally(() => {
loading.value = false;

16
readme.md Normal file
View File

@@ -0,0 +1,16 @@
discover
```
./backend tasks discover --from /mnt/yangpingliang/publish/ --to /mnt/yangpingliang/publish/processed/1
```
sync
```
rsync -avh --progress /mnt/ypl/publish/processed/ server.ali.bj.01:/data
```
store
```
tasks store --from /app/processed
```