feat: auto start workers
This commit is contained in:
17
backend/modules/middlewares/m_check_ua.go
Normal file
17
backend/modules/middlewares/m_check_ua.go
Normal 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()
|
||||||
|
}
|
||||||
@@ -2,7 +2,6 @@ package middlewares
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gofiber/fiber/v3"
|
"github.com/gofiber/fiber/v3"
|
||||||
log "github.com/sirupsen/logrus"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (f *Middlewares) DebugMode(c fiber.Ctx) error {
|
func (f *Middlewares) DebugMode(c fiber.Ctx) error {
|
||||||
@@ -10,6 +9,5 @@ func (f *Middlewares) DebugMode(c fiber.Ctx) error {
|
|||||||
// host := c.BaseURL()
|
// host := c.BaseURL()
|
||||||
// fmt.Println(strings.Split(c.Path(), "/"))
|
// fmt.Println(strings.Split(c.Path(), "/"))
|
||||||
// return c.SendString("ABC" + c.Params("+"))
|
// return c.SendString("ABC" + c.Params("+"))
|
||||||
log.SetLevel(log.DebugLevel)
|
|
||||||
return c.Next()
|
return c.Next()
|
||||||
}
|
}
|
||||||
|
|||||||
31
backend/modules/workers/provider.gen.go
Executable file
31
backend/modules/workers/provider.gen.go
Executable 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
|
||||||
|
}
|
||||||
39
backend/modules/workers/workers.go
Normal file
39
backend/modules/workers/workers.go
Normal 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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,10 +3,12 @@ package http
|
|||||||
import (
|
import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
"backend/modules/commands/store"
|
||||||
"backend/modules/medias"
|
"backend/modules/medias"
|
||||||
"backend/modules/middlewares"
|
"backend/modules/middlewares"
|
||||||
"backend/modules/users"
|
"backend/modules/users"
|
||||||
wechatModule "backend/modules/wechat"
|
wechatModule "backend/modules/wechat"
|
||||||
|
"backend/modules/workers"
|
||||||
"backend/providers/app"
|
"backend/providers/app"
|
||||||
"backend/providers/hashids"
|
"backend/providers/hashids"
|
||||||
"backend/providers/http"
|
"backend/providers/http"
|
||||||
@@ -49,6 +51,8 @@ func Command() atom.Option {
|
|||||||
users.Provide,
|
users.Provide,
|
||||||
medias.Provide,
|
medias.Provide,
|
||||||
wechatModule.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 {
|
if http.App.Mode == app.AppModeDevelopment {
|
||||||
log.SetLevel(log.DebugLevel)
|
log.SetLevel(log.DebugLevel)
|
||||||
}
|
}
|
||||||
|
|
||||||
engine := http.Service.Engine
|
engine := http.Service.Engine
|
||||||
mid := http.Middlewares
|
mid := http.Middlewares
|
||||||
|
|
||||||
engine.Use(mid.DebugMode)
|
engine.Use(mid.DebugMode)
|
||||||
|
engine.Use(mid.CheckUA)
|
||||||
engine.Use(mid.ProcessResponse)
|
engine.Use(mid.ProcessResponse)
|
||||||
engine.Use(mid.WeChatVerify)
|
engine.Use(mid.WeChatVerify)
|
||||||
|
|
||||||
|
|||||||
10
docker-compose.backend.yaml
Normal file
10
docker-compose.backend.yaml
Normal 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
|
||||||
10
docker-compose.postgres.yaml
Normal file
10
docker-compose.postgres.yaml
Normal 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
|
||||||
@@ -13,7 +13,6 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
setup(props) {
|
setup(props) {
|
||||||
return {
|
return {
|
||||||
copyCode,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
<van-back-top bottom="80" />
|
<van-back-top bottom="80" />
|
||||||
|
|
||||||
<van-list style="padding-bottom: 3em" v-model:loading="loading" :finished="finished"
|
<van-list style="padding-bottom: 3em" v-model:loading="loading" error-text="请求失败,点击重新加载" :finished="finished"
|
||||||
:finished-text="bought ? '您还没有购买' : '没有更多了'" offset="100" @load="loadData">
|
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" />
|
<list-item-card v-for="item in items" :key="item" :item="item" :bought="bought" />
|
||||||
</van-list>
|
</van-list>
|
||||||
</template>
|
</template>
|
||||||
@@ -20,6 +20,7 @@ export default defineComponent({
|
|||||||
setup(props) {
|
setup(props) {
|
||||||
const search = ref("");
|
const search = ref("");
|
||||||
const items = ref([]);
|
const items = ref([]);
|
||||||
|
const error = ref(false)
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
const finished = ref(false);
|
const finished = ref(false);
|
||||||
const pageLimit = ref(10);
|
const pageLimit = ref(10);
|
||||||
@@ -69,6 +70,7 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error("ERROR", err);
|
console.error("ERROR", err);
|
||||||
|
error.value = true
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
|
|||||||
16
readme.md
Normal file
16
readme.md
Normal 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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user