>  기사  >  백엔드 개발  >  동시 사용자 입력을 처리하면서 매일 정오에 Go 기능을 실행하는 방법은 무엇입니까?

동시 사용자 입력을 처리하면서 매일 정오에 Go 기능을 실행하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-21 06:23:09994검색

How to Execute a Go Function Daily at Noon While Handling Concurrent User Input?

Golang에서 정오에 코드 실행

이 시나리오에서는 매일 정오에 특정 기능을 실행하고 작업 중에 사용자 입력을 처리하는 것을 목표로 합니다. 나머지 프로그램 실행. 이를 효과적으로 달성할 수 있는 몇 가지 접근 방식은 다음과 같습니다.

간격 타이머

Go의 타이머 기능을 사용하면 미리 정의된 간격으로 작업을 실행할 수 있습니다. 매일 정오에 기능을 예약하려면 다음을 사용할 수 있습니다.

  • timer.AfterFunc(): 지정된 기간 후에 기능을 실행합니다.
  • time.Tick(): 지정된 시간에 현재 시간을 보내는 채널을 반환합니다. 간격.
  • time.Sleep(): 지정된 기간 동안 프로그램을 일시 중지합니다.
  • time.Ticker: 타이머.Tick( ), 그러나 지정된 간격으로 현재 시간을 전송하고 각 간격마다 재설정하는 채널을 제공합니다. send.

간격 계산

현재 시간과 다음 정오 사이의 간격을 결정하려면 먼저 이후 첫 번째 정오까지 남은 시간을 계산합니다. 프로그램이 시작됩니다. 그런 다음 후속 정오 작업에 24시간 간격을 사용합니다.

time.Sleep을 사용하는 샘플 코드:

package main

import "fmt"
import "time"

func noonTask() {
    fmt.Println(time.Now())
    fmt.Println("do some job.")
}

func initNoon() {
    t := time.Now()
    n := time.Date(t.Year(), t.Month(), t.Day(), 12, 0, 0, 0, t.Location())
    d := n.Sub(t)
    if d < 0 {
        n = n.Add(24 * time.Hour)
        d = n.Sub(t)
    }
    for {
        time.Sleep(d)
        d = 24 * time.Hour
        noonTask()
    }
}

func main() {
    initNoon()
}

timer.AfterFunc 사용:

package main

import (
    "fmt"
    "sync"
    "time"
)

func noonTask() {
    fmt.Println(time.Now())
    fmt.Println("do some job.")
    timer.AfterFunc(duration(), noonTask)
}

func main() {
    timer.AfterFunc(duration(), noonTask)
    wg.Add(1)
    // do normal task here
    wg.Wait()
}

func duration() time.Duration {
    t := time.Now()
    n := time.Date(t.Year(), t.Month(), t.Day(), 12, 0, 0, 0, t.Location())
    if t.After(n) {
        n = n.Add(24 * time.Hour)
    }
    d := n.Sub(t)
    return d
}

var wg sync.WaitGroup

추가 정보

  • [Github: Gocron](https://github.com/jasonlvhit/gocron)은 Go에서 작업 예약을 위한 유틸리티 라이브러리를 제공합니다.
  • [Golang - 특정 시점에 기능을 실행하는 방법 times](https://tutorialedge.net/golang/golang-execute-function-special-times/)
  • [Golang: cron 구현 / 특정 시간에 작업 실행](https://blog .logrocket.com/how-to-implement-a-cron-in-golang/)

위 내용은 동시 사용자 입력을 처리하면서 매일 정오에 Go 기능을 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.