fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 53s
Deploy Dev / Push (pull_request) Successful in 26s
Deploy Dev / Deploy dev (pull_request) Successful in 9s
Deploy Prod / Build (pull_request) Successful in 1m25s
Deploy Prod / Push (pull_request) Successful in 45s
Deploy Prod / Deploy prod (pull_request) Successful in 8s

This commit is contained in:
Egor Matveev 2025-01-13 13:41:45 +03:00
parent f3c832065a
commit bc9c8ad85d
3 changed files with 20 additions and 27 deletions

View File

@ -9,7 +9,7 @@ on:
jobs: jobs:
build: build:
name: Build name: Build
runs-on: [ dev ] runs-on: [dev]
steps: steps:
- name: login - name: login
run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }} run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }}
@ -21,18 +21,11 @@ jobs:
run: docker build -t mathwave/sprint-repo:queues . run: docker build -t mathwave/sprint-repo:queues .
push: push:
name: Push name: Push
runs-on: [ dev ] runs-on: [dev]
needs: build needs: build
steps: steps:
- name: push - name: push
run: docker push mathwave/sprint-repo:queues run: docker push mathwave/sprint-repo:queues
create_dir:
name: Create dir
runs-on: [ dev ]
needs: build
steps:
- name: create_dir
run: mkdir /sprint-data/queues-mongo || true
deploy-dev: deploy-dev:
name: Deploy dev name: Deploy dev
runs-on: [prod] runs-on: [prod]

View File

@ -9,7 +9,7 @@ on:
jobs: jobs:
build: build:
name: Build name: Build
runs-on: [ dev ] runs-on: [dev]
steps: steps:
- name: login - name: login
run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }} run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }}
@ -21,18 +21,11 @@ jobs:
run: docker build -t mathwave/sprint-repo:queues . run: docker build -t mathwave/sprint-repo:queues .
push: push:
name: Push name: Push
runs-on: [ dev ] runs-on: [dev]
needs: build needs: build
steps: steps:
- name: push - name: push
run: docker push mathwave/sprint-repo:queues run: docker push mathwave/sprint-repo:queues
create_dir:
name: Create dir
runs-on: [ prod ]
needs: build
steps:
- name: create_dir
run: mkdir /sprint-data/queues-mongo || true
deploy-prod: deploy-prod:
name: Deploy prod name: Deploy prod
runs-on: [prod] runs-on: [prod]

View File

@ -9,6 +9,7 @@ import (
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
) )
type Task struct { type Task struct {
@ -62,7 +63,19 @@ func Take(queue string) (*Task, error) {
if task == nil { if task == nil {
return nil, nil return nil, nil
} }
_, err = collection().UpdateByID(context.TODO(), task.Id, bson.M{"$set": bson.M{"taken_at": now, "attempts": task.Attempts + 1}}) _, err = collection().UpdateByID(
context.TODO(),
task.Id,
bson.M{
"$set": bson.M{
"taken_at": now,
"attempts": task.Attempts + 1,
"available_from": now.Add(
time.Duration(task.SecondsToExecute) * time.Second,
),
},
},
)
if err != nil { if err != nil {
println("Error updaing") println("Error updaing")
println(err.Error()) println(err.Error())
@ -78,6 +91,7 @@ func findTask(queue string, now time.Time) (*Task, error) {
"queue": queue, "queue": queue,
"available_from": bson.M{"$lte": now}, "available_from": bson.M{"$lte": now},
}, },
options.Find().SetLimit(1),
) )
if err != nil { if err != nil {
println("Error find") println("Error find")
@ -94,15 +108,8 @@ func findTask(queue string, now time.Time) (*Task, error) {
} }
for _, task := range results { for _, task := range results {
if task.TakenAt == nil {
return &task, nil return &task, nil
} }
takenAt := *task.TakenAt
if takenAt.Add(time.Second * time.Duration(task.SecondsToExecute)).Before(now) {
return &task, nil
}
}
return nil, nil return nil, nil
} }