Initial content, migrated from the aml gateway rpi7-am-1
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
# bar-closer
|
# bar-closer
|
||||||
|
|
||||||
Nightly close of oven_bar rows left without an exit
|
Runs once a day at 04:00 and exits. Closes every `oven_bar` row that was opened but never
|
||||||
|
got an exit, setting `exited_time` to its `entered_time`, so a missed exit detection does not
|
||||||
|
leave a bar open forever and shift `bar-tracker`'s oldest-open matching.
|
||||||
|
|
||||||
|
Reads no signals, which is why `signals.yml` is empty. Needs the db-controller reachable from
|
||||||
|
the job's sidecar. A query returns at most 100 rows, so more than 100 orphans take more than one
|
||||||
|
night to clear. Runs in `docker.izazpi.cloud/aml/aml-python`; the version is in
|
||||||
|
`schedule.yaml`.
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
from i7lib.dbutils import Database
|
||||||
|
from i7lib.timeutils import to_datetime
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
db = Database()
|
||||||
|
rows = db.query(
|
||||||
|
"oven_bar",
|
||||||
|
filters=[
|
||||||
|
{"column": "exited_time", "op": "eq", "value": 0},
|
||||||
|
{"column": "deleted", "op": "eq", "value": 0},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
if not rows:
|
||||||
|
print("no orphan bars to close")
|
||||||
|
return
|
||||||
|
|
||||||
|
for row in rows:
|
||||||
|
db.update("oven_bar", row["id"], {"exited_time": row["entered_time"]})
|
||||||
|
dt = to_datetime(row["entered_time"]).strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
print(f"closed orphan bar id={row['id']}, entered_time={dt}")
|
||||||
|
|
||||||
|
print(f"closed {len(rows)} orphan bar(s)")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
name: bar-closer
|
||||||
|
active: true
|
||||||
|
schedule: "0 4 * * *"
|
||||||
|
action: run
|
||||||
|
runOnStartup: false
|
||||||
|
imageName: docker.izazpi.cloud/aml/aml-python:0.1.0
|
||||||
|
command: ["python", "/app/bar_closer.py"]
|
||||||
|
maxCpuCores: 0.5
|
||||||
|
maxMemoryMb: 128
|
||||||
|
autoremove: false
|
||||||
|
logOption: 1
|
||||||
Reference in New Issue
Block a user