1
- from dataclasses import dataclass
2
- from datetime import datetime
3
1
from multiprocessing import Queue
4
2
from typing import List , Optional
5
3
6
- from jupyter_scheduler .orm import Downloads , create_session , generate_uuid
7
- from jupyter_scheduler .pydantic_v1 import BaseModel
4
+ from jupyter_scheduler .models import DescribeDownload
5
+ from jupyter_scheduler .orm import Download , create_session , generate_uuid
8
6
from jupyter_scheduler .utils import get_utc_timestamp
9
7
from jupyter_scheduler .pydantic_v1 import BaseModel
10
8
11
9
12
- class DescribeDownload (BaseModel ):
13
- job_id : str
14
- download_id : str
15
- download_initiated_time : int
16
-
17
- class Config :
18
- orm_mode = True
19
-
20
-
21
- @dataclass
22
- class DownloadTask :
23
- job_id : str
24
- download_id : str
25
- download_initiated_time : int
26
-
27
- def __lt__ (self , other ):
28
- return self .download_initiated_time < other .download_initiated_time
29
-
30
- def __str__ (self ):
31
- download_initiated_time = datetime .fromtimestamp (self .download_initiated_time / 1e3 )
32
- return f"Id: { self .job_id } , Download initiated: { download_initiated_time } "
33
-
34
-
35
10
class DownloadRecordManager :
36
11
def __init__ (self , db_url ):
37
12
self .session = create_session (db_url )
38
13
39
14
def put (self , download : DescribeDownload ):
40
15
with self .session () as session :
41
- new_download = Downloads (** download .dict ())
42
- session .add (new_download )
16
+ download = Download (** download .dict ())
17
+ session .add (download )
43
18
session .commit ()
44
19
45
20
def get (self , job_id : str ) -> Optional [DescribeDownload ]:
46
21
with self .session () as session :
47
- download = session .query (Downloads ).filter (Downloads .job_id == job_id ).first ()
22
+ download = session .query (Download ).filter (Download .job_id == job_id ).first ()
48
23
49
24
if download :
50
25
return DescribeDownload .from_orm (download )
51
26
else :
52
27
return None
53
28
54
- def get_tasks (self ) -> List [DescribeDownload ]:
29
+ def get_downloads (self ) -> List [DescribeDownload ]:
55
30
with self .session () as session :
56
- return session .query (Downloads ).order_by (Downloads .download_initiated_time ).all ()
31
+ return session .query (Download ).order_by (Download .download_initiated_time ).all ()
57
32
58
33
def delete_download (self , download_id : str ):
59
34
with self .session () as session :
60
- session .query (Downloads ).filter (Downloads .download_id == download_id ).delete ()
35
+ session .query (Download ).filter (Download .download_id == download_id ).delete ()
61
36
session .commit ()
62
37
63
38
def delete_job_downloads (self , job_id : str ):
64
39
with self .session () as session :
65
- session .query (Downloads ).filter (Downloads .job_id == job_id ).delete ()
40
+ session .query (Download ).filter (Download .job_id == job_id ).delete ()
66
41
session .commit ()
67
42
68
43
@@ -74,18 +49,13 @@ def __init__(self, db_url: str):
74
49
def download_from_staging (self , job_id : str ):
75
50
download_initiated_time = get_utc_timestamp ()
76
51
download_id = generate_uuid ()
77
- download_cache = DescribeDownload (
78
- job_id = job_id ,
79
- download_id = download_id ,
80
- download_initiated_time = download_initiated_time ,
81
- )
82
- self .record_manager .put (download_cache )
83
- download_task = DownloadTask (
52
+ download = DescribeDownload (
84
53
job_id = job_id ,
85
54
download_id = download_id ,
86
55
download_initiated_time = download_initiated_time ,
87
56
)
88
- self .queue .put (download_task )
57
+ self .record_manager .put (download )
58
+ self .queue .put (download )
89
59
90
60
def delete_download (self , download_id : str ):
91
61
self .record_manager .delete_download (download_id )
@@ -94,11 +64,6 @@ def delete_job_downloads(self, job_id: str):
94
64
self .record_manager .delete_job_downloads (job_id )
95
65
96
66
def populate_queue (self ):
97
- tasks = self .record_manager .get_tasks ()
98
- for task in tasks :
99
- download_task = DownloadTask (
100
- job_id = task .job_id ,
101
- download_id = task .download_id ,
102
- download_initiated_time = task .download_initiated_time ,
103
- )
104
- self .queue .put (download_task )
67
+ downloads = self .record_manager .get_downloads ()
68
+ for download in downloads :
69
+ self .queue .put (download )
0 commit comments