1
1
import asyncio
2
+ import traitlets
3
+ from traitlets .config import LoggingConfigurable
2
4
5
+ from jupyter_server .transutils import _i18n
3
6
from jupyter_scheduler .download_manager import DownloadManager
4
7
from jupyter_scheduler .job_files_manager import JobFilesManager
5
8
6
9
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
+
8
27
def start (self ):
9
28
raise NotImplementedError ("Must be implemented by subclass" )
10
29
11
30
12
31
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
+
13
36
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
18
38
):
39
+ super ().__init__ (config = config )
19
40
self .download_manager = download_manager
20
41
self .job_files_manager = job_files_manager
21
- self .poll_interval = poll_interval
22
42
23
43
async def process_download_queue (self ):
24
44
while not self .download_manager .queue .empty ():
@@ -33,4 +53,4 @@ async def start(self):
33
53
self .download_manager .populate_queue ()
34
54
while True :
35
55
await self .process_download_queue ()
36
- await asyncio .sleep (self .poll_interval )
56
+ await asyncio .sleep (self .downloads_poll_interval )
0 commit comments