Skip to content

Commit 381dcae

Browse files
committed
add traitlets-configurable downloads_poll_interval
1 parent ba44f7c commit 381dcae

File tree

1 file changed

+27
-7
lines changed

1 file changed

+27
-7
lines changed

jupyter_scheduler/download_runner.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,44 @@
11
import asyncio
2+
import traitlets
3+
from traitlets.config import LoggingConfigurable
24

5+
from jupyter_server.transutils import _i18n
36
from jupyter_scheduler.download_manager import DownloadManager
47
from jupyter_scheduler.job_files_manager import JobFilesManager
58

69

7-
class BaseDownloadRunner:
10+
class BaseDownloadRunner(LoggingConfigurable):
11+
"""Base download runner, this class's start method is called
12+
at the start of jupyter server, and is responsible for
13+
polling for downloads to download.
14+
"""
15+
16+
def __init__(self, config=None, **kwargs):
17+
super().__init__(config=config)
18+
19+
downloads_poll_interval = traitlets.Integer(
20+
default_value=3,
21+
config=True,
22+
help=_i18n(
23+
"The interval in seconds that the download runner polls for downloads to download."
24+
),
25+
)
26+
827
def start(self):
928
raise NotImplementedError("Must be implemented by subclass")
1029

1130

1231
class DownloadRunner(BaseDownloadRunner):
32+
"""Default download runner that maintains a record and a queue of initiated downloads , and polls the queue every `poll_interval` seconds
33+
for downloads to download.
34+
"""
35+
1336
def __init__(
14-
self,
15-
download_manager: DownloadManager,
16-
job_files_manager: JobFilesManager,
17-
poll_interval: int = 5,
37+
self, download_manager: DownloadManager, job_files_manager: JobFilesManager, config=None
1838
):
39+
super().__init__(config=config)
1940
self.download_manager = download_manager
2041
self.job_files_manager = job_files_manager
21-
self.poll_interval = poll_interval
2242

2343
async def process_download_queue(self):
2444
while not self.download_manager.queue.empty():
@@ -33,4 +53,4 @@ async def start(self):
3353
self.download_manager.populate_queue()
3454
while True:
3555
await self.process_download_queue()
36-
await asyncio.sleep(self.poll_interval)
56+
await asyncio.sleep(self.downloads_poll_interval)

0 commit comments

Comments
 (0)