18
18
from scrapyd_k8s .joblogs import KubernetesJobLogHandler
19
19
20
20
logger = logging .getLogger (__name__ )
21
+ logger .setLevel (logging .DEBUG )
21
22
22
23
class K8s :
23
24
@@ -27,6 +28,7 @@ class K8s:
27
28
28
29
def __init__ (self , config ):
29
30
self ._namespace = config .scrapyd ().get ('namespace' , 'default' )
31
+ self .max_proc = config .scrapyd ().get ('max_proc' )
30
32
self ._pull_secret = config .scrapyd ().get ('pull_secret' )
31
33
# TODO figure out where to put Kubernetes initialisation
32
34
try :
@@ -37,9 +39,8 @@ def __init__(self, config):
37
39
self ._k8s = kubernetes .client .CoreV1Api ()
38
40
self ._k8s_batch = kubernetes .client .BatchV1Api ()
39
41
40
- self .scheduler = None
42
+ self .k8s_scheduler = None
41
43
self ._init_resource_watcher (config )
42
- self .max_proc = int (config .scrapyd ().get ('max_proc' , 4 ))
43
44
44
45
def _init_resource_watcher (self , config ):
45
46
self .resource_watcher = ResourceWatcher (self ._namespace , config )
@@ -50,12 +51,7 @@ def _init_resource_watcher(self, config):
50
51
if self .max_proc is not None :
51
52
self .enable_k8s_scheduler (config )
52
53
else :
53
- logger .debug ("k8s scheduler not enabled; 'max_proc' configuration is missing in the scrapyd section." )
54
-
55
- # Initialize KubernetesScheduler
56
- self .max_proc = int (config .scrapyd ().get ('max_proc' , 4 ))
57
- self .k8s_scheduler = KubernetesScheduler (config , self , self .resource_watcher , self .max_proc )
58
- logger .debug (f"KubernetesLauncher initialized with max_proc={ self .max_proc } ." )
54
+ logger .debug ("k8s scheduler not enabled; jobs run directly after scheduling." )
59
55
60
56
def get_node_name (self ):
61
57
deployment = os .getenv ('MY_DEPLOYMENT_NAME' , 'default' )
@@ -71,11 +67,11 @@ def listjobs(self, project=None):
71
67
)
72
68
73
69
def schedule (self , project , version , spider , job_id , settings , args ):
74
- if self .scheduler :
70
+ if self .k8s_scheduler :
75
71
running_jobs = self .get_running_jobs_count ()
76
- start_suspended = running_jobs >= self .scheduler .max_proc
72
+ start_suspended = running_jobs >= self .k8s_scheduler .max_proc
77
73
logger .debug (
78
- f"Scheduling job { job_id } with start_suspended={ start_suspended } . Running jobs: { running_jobs } , Max procs: { self .scheduler .max_proc } " )
74
+ f"Scheduling job { job_id } with start_suspended={ start_suspended } . Running jobs: { running_jobs } , Max procs: { self .k8s_scheduler .max_proc } " )
79
75
else :
80
76
start_suspended = False
81
77
logger .debug (f"Scheduling job { job_id } without suspension. Scheduler not enabled." )
@@ -175,16 +171,16 @@ def enable_joblogs(self, config):
175
171
def enable_k8s_scheduler (self , config ):
176
172
try :
177
173
max_proc = int (self .max_proc )
178
- self .scheduler = KubernetesScheduler (config , self , max_proc )
174
+ self .k8s_scheduler = KubernetesScheduler (config , self , max_proc )
179
175
logger .debug (f"KubernetesLauncher initialized with max_proc={ max_proc } ." )
180
- self .resource_watcher .subscribe (self .scheduler .handle_pod_event )
176
+ self .resource_watcher .subscribe (self .k8s_scheduler .handle_pod_event )
181
177
logger .info ("K8s scheduler started." )
182
178
except ValueError :
183
179
logger .error (f"Invalid max_proc value: { self .max_proc } . Scheduler not enabled." )
184
- self .scheduler = None
180
+ self .k8s_scheduler = None
185
181
186
182
def unsuspend_job (self , job_id : str ):
187
- if not self .scheduler :
183
+ if not self .k8s_scheduler :
188
184
logger .error ("Scheduler is not enabled. Cannot unsuspend jobs." )
189
185
return False
190
186
job_name = self ._get_job_name (job_id )
0 commit comments