Golang: Die Angelegenheit, dass Sie den Prozess genau um 00:00 oder 30 Minuten im angegebenen Intervall ausführen möchten.

Der Ticker funktioniert nicht wie erwartet!

Es gibt einen Job, bei dem ich ansässig sein und regelmäßig ausgeführt werden möchte. Wenn es sich jedoch um einen normalen Ticker handelt, beginnt die Intervallzählung ab dem Zeitpunkt, zu dem der Ticker nach dem Start erstellt wurde, sodass die Zeit nicht genau festgelegt werden kann. Selbst wenn der Ticker auf ein Intervall von 12:00:00 eingestellt wäre, würde er gelegentlich auf 11: 59: 59.999 verschoben, und die verarbeiteten Daten würden dupliziert und registriert.

Ich habe auch geschrieben, wie man Ticker benutzt und Zeitsteuerung übt.

https://github.com/xbridges/Scheduler Der Ticker ruft Sie einfach genau im angegebenen Zeitintervall an.

ex) sch, next := NewScheduler(3600, 0)

Wenn Sie so beginnen, wird der Ticker einmal pro Stunde ausgelöst. Wenn Sie den Versatzwert verwenden, beträgt das Intervall jede Stunde (3600). Wenn Sie jedoch den Versatz auf 600 einstellen, wird der Ticker stündlich um 05 Minuten ausgelöst.

Ich habe es großartig geschrieben, aber was ich getan habe, war nur eine Runde (lacht)

Ich wickle nur den Ticker ein, aber Kimo

  is := time.Duration(interval) * time.Second  // <--Stellen Sie die angegebene Zeit auf Dauer ein
  n := time.Now()   // <--Aktuelle Uhrzeit
  ns := n.Round(is) // <--Es fühlt sich an, als würde man die aktuelle Zeit mit einer Intervallzeit maskieren und runden.

Wenn Sie dies tun, bewegt sich der Ticker gelegentlich zu früh, und selbst wenn er 59 Minuten 59 Sekunden .9999 erreicht, wird er abgerundet, sodass die Zeit in den nächsten 00 Minuten ordnungsgemäß ausgelöst wird.

Ich machte mir eine Notiz, weil es regelmäßig lief und ich ein wenig süchtig danach war.

Referenz

http://okzk.hatenablog.com/entry/2015/12/01/001924

Recommended Posts

Golang: Die Angelegenheit, dass Sie den Prozess genau um 00:00 oder 30 Minuten im angegebenen Intervall ausführen möchten.
Wenn Sie das Intervall der Achsenskala mit APLpy anpassen möchten
[Python3] Code, der verwendet werden kann, wenn Sie die Erweiterung eines Bildes sofort ändern möchten
Die Geschichte der IPv6-Adresse, die ich auf ein Minimum beschränken möchte
Wenn Sie den Chrome-Treiber aktualisieren möchten.
Soll ich diese Kopie reparieren?