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