timer: Erweiterte Timer für nginx-module-lua
Installation
Wenn Sie das RPM-Repository-Abonnement noch nicht eingerichtet haben, melden Sie sich an. Dann können Sie mit den folgenden Schritten fortfahren.
CentOS/RHEL 7 oder Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-timer
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-timer
Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.
Dieses Dokument beschreibt lua-resty-timer v1.1.0, veröffentlicht am 06. November 2020.
Erweiterte Timer für OpenResty. Bietet wiederkehrende, stornierbare, nodeweite Timer, die über das hinausgehen, was die grundlegenden OpenResty-Timer tun.
Synopsis
http {
lua_shared_dict timer_shm 1m;
init_worker_by_lua_block {
local timer = require("resty.timer")
local options = {
interval = 0.1, -- Ablaufintervall in Sekunden
recurring = true, -- wiederkehrender oder einzelner Timer
immediate = true, -- das anfängliche Intervall wird 0 sein
detached = false, -- getrennt ausführen oder garbagecollectible sein
jitter = 0.1, -- ein zufälliges Intervall hinzufügen
expire = object.handler, -- Callback beim Ablauf des Timers
cancel = function(reason, self, param1)
-- wird aufgerufen, wenn der Timer storniert wird
end,
shm_name = "timer_shm", -- shm, das für nodeweite Timer verwendet werden soll
key_name = "my_key", -- Schlüsselname, der für nodeweite Timer verwendet werden soll
sub_interval = 0.1, -- maximale zusätzliche Verzögerung zwischen Arbeitern
}
local object
object = { -- ein Objekt mit einem Timer erstellen
count = 0,
handler = function(self, param1) -- der Timer-Callback als Methode
-- hier etwas tun
print(param1) --> "Param 1"
end,
-- erstellen und zum Objekt hinzufügen, aber auch als 'self' an den Handler übergeben
timer = timer(options, object, "Param 1"),
}
-- das Objekt und den Timer verankern
_M.global_object = object -- wird gesammelt, wenn es nicht verankert ist
-- den Timer stornieren
object.timer:cancel()
}
}
Beschreibung
Der OpenResty-Timer ist ziemlich eingeschränkt, dieser Timer fügt eine Reihe von gängigen Optionen als Parameter hinzu, ohne dass sie in jedem Projekt neu codiert (und erneut getestet) werden müssen.
-
wiederkehrende Timer (unterstützt von OR sowie durch
ngx.timer.every) -
sofortiger erster Lauf für wiederkehrende Timer
-
stornierbare Timer
-
Stornierungs-Callback, der aufgerufen wird, wenn der Timer storniert wird
-
garbage collectible Timer, die es ermöglichen, Timer (optional) an Objekte anzuhängen und automatisch zu stoppen, wenn sie garbage collected werden.
-
nodeweite Timer: Der gleiche Timer, der in jedem Worker gestartet wird, wird im gesamten System nur einmal ausgeführt. Wenn der Worker, der ihn ausführt, entfernt wird, wird der Timer automatisch auf einem anderen Worker ausgeführt.
Siehe die online LDoc-Dokumentation für die vollständige API.
Geschichte
Die Versionierung basiert streng auf Semantic Versioning
Veröffentlichung neuer Versionen:
- aktualisieren Sie das Änderungsprotokoll unten (PRs sollten zusammen mit einem Änderungsprotokolleintrag zusammengeführt werden)
- basierend auf dem Änderungsprotokoll die neue SemVer-Version bestimmen
- eine neue rockspec erstellen
- die Dokumente mit
ldocrendern (nicht innerhalb von PRs tun) - committen als "release x.x.x" (keine rockspec-Revision einfügen)
- den Commit mit "x.x.x" taggen (keine rockspec-Revision einfügen)
- Commit und Tag pushen
- Rock zu luarocks hochladen:
luarocks upload rockspecs/[name] --api-key=abc
1.1.0 (6-Nov-2020)
- Feat: eine
jitter-Option hinzugefügt. Dies fügt ein zufälliges Intervall hinzu, um die Timer zu verteilen (im Falle der gleichzeitigen Planung vieler Timer).
1.0.0 (21-Sep-2020)
- Änderung [BREAKING]: die wiederkehrenden Timer werden jetzt als schlafender Thread implementiert, was effizienter ist. Nebeneffekt ist, dass der Timer nur NACH der Ausführung des Handlers neu geplant wird. Wenn der Handler lange läuft, werden die einzelnen Ausführungen weiter auseinander liegen.
0.3 (28-May-2018)
- Feat: Hinzufügen der Stornierungs-Callback-Auslösung, wenn der Timer garbage collected wird. Dies ändert das erste Argument des
cancel-Callbacks und ist daher breaking.
0.2 (12-Feb-2018) Fehlerbehebung
- Fix: Fehlerbehebung in der
unpack-Funktion, die den Tabellenlängenparameter nicht beachtet - Docs: kleine Korrekturen und Tippfehler
0.1 (22-Nov-2017) Erste Veröffentlichung
- Hinzufügen der
sub_interval-Option zur Reduzierung von Verzögerungen - Erste Hochladung
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-timer.