Skip to content

Commit

Permalink
update progress bar
Browse files Browse the repository at this point in the history
  • Loading branch information
floriankrb committed Jul 16, 2024
1 parent 20b54a4 commit 3e1d70b
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions src/anemoi/registry/workers/transfer_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import datetime
import logging
import os
from copy import deepcopy

from anemoi.registry.entry.dataset import DatasetCatalogueEntry

Expand All @@ -17,30 +18,45 @@


class Progress:
latest_progress = None
latest = None

def __init__(self, task, frequency=60):
self.task = task
self.frequency = frequency
self.first_progress = None
self.first_transfer_progress = None
self.previous_progress = None

def __call__(self, number_of_files, total_size, total_transferred, transfering, **kwargs):
now = datetime.datetime.utcnow()

if self.latest_progress is not None and (now - self.latest_progress).seconds < self.frequency:
if self.latest is not None and (now - self.latest).seconds < self.frequency:
# already updated recently
return

p = dict(
progress = dict(
number_of_files=number_of_files,
total_size=total_size,
total_transferred=total_transferred,
transfering=transfering,
timestamp=now.isoformat(),
percentage=100 * total_transferred / total_size if total_size and transfering else 0,
**kwargs,
)
p["percentage"] = 100 * total_transferred / total_size if total_size and transfering else 0

if self.first_progress is None:
self.first_progress = progress
if self.first_transfer_progress is None and transfering:
self.first_transfer_progress = progress

p = deepcopy(progress)
p["first_progress"] = self.first_progress
p["first_transfer_progress"] = self.first_transfer_progress
p["previous_progress"] = self.previous_progress
self.task.set_progress(p)

self.previous_progress = progress


class TransferDatasetWorker(Worker):
name = "transfer-dataset"
Expand Down

0 comments on commit 3e1d70b

Please sign in to comment.