parsl 2025.2.17__py3-none-any.whl → 2025.3.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- parsl/executors/taskvine/factory.py +4 -0
- parsl/executors/workqueue/executor.py +3 -3
- parsl/providers/kubernetes/kube.py +10 -2
- parsl/utils.py +2 -0
- parsl/version.py +1 -1
- {parsl-2025.2.17.dist-info → parsl-2025.3.3.dist-info}/METADATA +2 -2
- {parsl-2025.2.17.dist-info → parsl-2025.3.3.dist-info}/RECORD +15 -15
- {parsl-2025.2.17.data → parsl-2025.3.3.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2025.2.17.data → parsl-2025.3.3.data}/scripts/interchange.py +0 -0
- {parsl-2025.2.17.data → parsl-2025.3.3.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2025.2.17.data → parsl-2025.3.3.data}/scripts/process_worker_pool.py +0 -0
- {parsl-2025.2.17.dist-info → parsl-2025.3.3.dist-info}/LICENSE +0 -0
- {parsl-2025.2.17.dist-info → parsl-2025.3.3.dist-info}/WHEEL +0 -0
- {parsl-2025.2.17.dist-info → parsl-2025.3.3.dist-info}/entry_points.txt +0 -0
- {parsl-2025.2.17.dist-info → parsl-2025.3.3.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,5 @@
|
|
1
1
|
import logging
|
2
|
+
import os
|
2
3
|
|
3
4
|
from parsl.executors.taskvine.errors import TaskVineFactoryFailure
|
4
5
|
from parsl.process_loggers import wrap_with_logs
|
@@ -43,6 +44,9 @@ def _taskvine_factory(should_stop, factory_config):
|
|
43
44
|
factory.max_workers = factory_config.max_workers
|
44
45
|
factory.workers_per_cycle = factory_config.workers_per_cycle
|
45
46
|
|
47
|
+
# create scratch dir if factory process gets ahead of the manager.
|
48
|
+
os.makedirs(factory.scratch_dir, exist_ok=True)
|
49
|
+
|
46
50
|
if factory_config.worker_options:
|
47
51
|
factory.extra_options = factory_config.worker_options
|
48
52
|
factory.timeout = factory_config.worker_timeout
|
@@ -333,7 +333,7 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
|
|
333
333
|
|
334
334
|
logger.debug("Starting WorkQueueExecutor")
|
335
335
|
|
336
|
-
|
336
|
+
port_mailbox = multiprocessing.Queue()
|
337
337
|
|
338
338
|
# Create a Process to perform WorkQueue submissions
|
339
339
|
submit_process_kwargs = {"task_queue": self.task_queue,
|
@@ -351,7 +351,7 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
|
|
351
351
|
"wq_log_dir": self.wq_log_dir,
|
352
352
|
"project_password_file": self.project_password_file,
|
353
353
|
"project_name": self.project_name,
|
354
|
-
"port_mailbox":
|
354
|
+
"port_mailbox": port_mailbox,
|
355
355
|
"coprocess": self.coprocess
|
356
356
|
}
|
357
357
|
self.submit_process = multiprocessing.Process(target=_work_queue_submit_wait,
|
@@ -366,7 +366,7 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
|
|
366
366
|
self.submit_process.start()
|
367
367
|
self.collector_thread.start()
|
368
368
|
|
369
|
-
self._chosen_port =
|
369
|
+
self._chosen_port = port_mailbox.get(timeout=60)
|
370
370
|
|
371
371
|
logger.debug(f"Chosen listening port is {self._chosen_port}")
|
372
372
|
|
@@ -61,6 +61,10 @@ class KubernetesProvider(ExecutionProvider, RepresentationMixin):
|
|
61
61
|
Memory limits of the blocks (pods), in Mi or Gi.
|
62
62
|
This is the memory "requests" option for resource specification on kubernetes.
|
63
63
|
Check kubernetes docs for more details. Default is 250Mi.
|
64
|
+
extra_requests: Dict[str, str]
|
65
|
+
Extra resource requests of the blocks (pods). Check kubernetes docs for more details.
|
66
|
+
extra_limits: Dict[str, str]
|
67
|
+
Extra resource limits of the blocks (pods). Check kubernetes docs for more details.
|
64
68
|
parallelism : float
|
65
69
|
Ratio of provisioned task slots to active tasks. A parallelism value of 1 represents aggressive
|
66
70
|
scaling where as many resources as possible are used; parallelism close to 0 represents
|
@@ -98,6 +102,8 @@ class KubernetesProvider(ExecutionProvider, RepresentationMixin):
|
|
98
102
|
max_mem: str = "500Mi",
|
99
103
|
init_cpu: float = 1,
|
100
104
|
init_mem: str = "250Mi",
|
105
|
+
extra_requests: Optional[Dict[str, str]] = None,
|
106
|
+
extra_limits: Optional[Dict[str, str]] = None,
|
101
107
|
parallelism: float = 1,
|
102
108
|
worker_init: str = "",
|
103
109
|
pod_name: Optional[str] = None,
|
@@ -142,6 +148,8 @@ class KubernetesProvider(ExecutionProvider, RepresentationMixin):
|
|
142
148
|
self.max_mem = max_mem
|
143
149
|
self.init_cpu = init_cpu
|
144
150
|
self.init_mem = init_mem
|
151
|
+
self.extra_requests = extra_requests if extra_requests else {}
|
152
|
+
self.extra_limits = extra_limits if extra_limits else {}
|
145
153
|
self.parallelism = parallelism
|
146
154
|
self.worker_init = worker_init
|
147
155
|
self.secret = secret
|
@@ -300,9 +308,9 @@ class KubernetesProvider(ExecutionProvider, RepresentationMixin):
|
|
300
308
|
volume_mounts.append(client.V1VolumeMount(mount_path=volume[1],
|
301
309
|
name=volume[0]))
|
302
310
|
resources = client.V1ResourceRequirements(limits={'cpu': str(self.max_cpu),
|
303
|
-
'memory': self.max_mem},
|
311
|
+
'memory': self.max_mem} | self.extra_limits,
|
304
312
|
requests={'cpu': str(self.init_cpu),
|
305
|
-
'memory': self.init_mem}
|
313
|
+
'memory': self.init_mem} | self.extra_requests,
|
306
314
|
)
|
307
315
|
# Configure Pod template container
|
308
316
|
container = client.V1Container(
|
parsl/utils.py
CHANGED
parsl/version.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: parsl
|
3
|
-
Version: 2025.
|
3
|
+
Version: 2025.3.3
|
4
4
|
Summary: Simple data dependent workflows in Python
|
5
5
|
Home-page: https://github.com/Parsl/parsl
|
6
|
-
Download-URL: https://github.com/Parsl/parsl/archive/2025.
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2025.03.03.tar.gz
|
7
7
|
Author: The Parsl Team
|
8
8
|
Author-email: parsl@googlegroups.com
|
9
9
|
License: Apache 2.0
|
@@ -7,8 +7,8 @@ parsl/log_utils.py,sha256=u14Fkl5eDfS4HMpl0JjseNNPdbvPaugWPRQj1_af_Zo,3273
|
|
7
7
|
parsl/multiprocessing.py,sha256=MyaEcEq-Qf860u7V98u-PZrPNdtzOZL_NW6EhIJnmfQ,1937
|
8
8
|
parsl/process_loggers.py,sha256=uQ7Gd0W72Jz7rrcYlOMfLsAEhkRltxXJL2MgdduJjEw,1136
|
9
9
|
parsl/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
-
parsl/utils.py,sha256=
|
11
|
-
parsl/version.py,sha256=
|
10
|
+
parsl/utils.py,sha256=codTX6_KLhgeTwNkRzc1lo4bgc1M93eJ-lkqOO98fvk,14331
|
11
|
+
parsl/version.py,sha256=JZR2YCezBq1F5cw4-KEsJxZK4DKSK_Po-wBKZDC4T7o,131
|
12
12
|
parsl/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
parsl/app/app.py,sha256=0gbM4AH2OtFOLsv07I5nglpElcwMSOi-FzdZZfrk7So,8532
|
14
14
|
parsl/app/bash.py,sha256=jm2AvePlCT9DZR7H_4ANDWxatp5dN_22FUlT_gWhZ-g,5528
|
@@ -92,7 +92,7 @@ parsl/executors/taskvine/__init__.py,sha256=9rwp3M8B0YyEhZMLO0RHaNw7u1nc01WHbXLq
|
|
92
92
|
parsl/executors/taskvine/errors.py,sha256=euIYkSslrNSI85kyi2s0xzOaO9ik4c1fYHstMIeiBJk,652
|
93
93
|
parsl/executors/taskvine/exec_parsl_function.py,sha256=ftGdJU78lKPPkphSHlEi4rj164mhuMHJjghVqfgeXKk,7085
|
94
94
|
parsl/executors/taskvine/executor.py,sha256=4c0mt83G-F4ZFMxhdJByvYjG05QdLrLYYHsmpPXY6YE,30906
|
95
|
-
parsl/executors/taskvine/factory.py,sha256=
|
95
|
+
parsl/executors/taskvine/factory.py,sha256=GU5JryEAKJuYKwrSc162BN-lhcKhapvBZHT820pxwic,2772
|
96
96
|
parsl/executors/taskvine/factory_config.py,sha256=ZQC5vyDe8cM0nuv7fbBCV2xnWGAZ87iLlT2UqmFFI1U,3695
|
97
97
|
parsl/executors/taskvine/manager.py,sha256=SUi5mqqMm_rnkBLrZtTQe7RiHqWDn1oOejQscYzfwAU,25797
|
98
98
|
parsl/executors/taskvine/manager_config.py,sha256=96G1LMBvgg74sHX4UcOzkCXhEdtVXry4ZzMDEYLWBTQ,7669
|
@@ -100,7 +100,7 @@ parsl/executors/taskvine/utils.py,sha256=iSrIogeiauL3UNy_9tiZp1cBSNn6fIJkMYQRVi1
|
|
100
100
|
parsl/executors/workqueue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
101
101
|
parsl/executors/workqueue/errors.py,sha256=XO2naYhAsHHyiOBH6hpObg3mPNDmvMoFqErsj0-v7jc,541
|
102
102
|
parsl/executors/workqueue/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
|
103
|
-
parsl/executors/workqueue/executor.py,sha256=
|
103
|
+
parsl/executors/workqueue/executor.py,sha256=QYJ02jt0AG-83XN0-mUa9LSUezroYSbh1OkOGzGLIqo,49693
|
104
104
|
parsl/executors/workqueue/parsl_coprocess.py,sha256=cF1UmTgVLoey6QzBcbYgEiEsRidSaFfuO54f1HFw_EM,5737
|
105
105
|
parsl/executors/workqueue/parsl_coprocess_stub.py,sha256=_bJmpPIgL42qM6bVzeEKt1Mn1trSP41rtJguXxPGfHI,735
|
106
106
|
parsl/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -170,7 +170,7 @@ parsl/providers/grid_engine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
|
|
170
170
|
parsl/providers/grid_engine/grid_engine.py,sha256=1W553Hf03BjhV-tjAYG1y4-g7LynloJXmdgAguuEcIY,8072
|
171
171
|
parsl/providers/grid_engine/template.py,sha256=a7iViKr8LXcFTPmsf_qQeVK5o_RekOAIlUOF0X1q-2M,273
|
172
172
|
parsl/providers/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
173
|
-
parsl/providers/kubernetes/kube.py,sha256=
|
173
|
+
parsl/providers/kubernetes/kube.py,sha256=WFCsIVWwXMxjOvfjZIm40YTEAYT11dj8KHICVcXZuaI,15515
|
174
174
|
parsl/providers/kubernetes/template.py,sha256=VsRz6cmNaII-y4OdMT6sCwzQy95SJX6NMB0hmmFBhX4,50
|
175
175
|
parsl/providers/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
176
176
|
parsl/providers/local/local.py,sha256=s8Qx3ONJNoCrC-fYTDrZ_RHwmgmCsFpe9y9Y5hYvSYA,10472
|
@@ -455,13 +455,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
455
455
|
parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
|
456
456
|
parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
|
457
457
|
parsl/usage_tracking/usage.py,sha256=f9k6QcpbQxkGyP5WTC9PVyv0CA05s9NDpRe5wwRdBTM,9163
|
458
|
-
parsl-2025.
|
459
|
-
parsl-2025.
|
460
|
-
parsl-2025.
|
461
|
-
parsl-2025.
|
462
|
-
parsl-2025.
|
463
|
-
parsl-2025.
|
464
|
-
parsl-2025.
|
465
|
-
parsl-2025.
|
466
|
-
parsl-2025.
|
467
|
-
parsl-2025.
|
458
|
+
parsl-2025.3.3.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
|
459
|
+
parsl-2025.3.3.data/scripts/interchange.py,sha256=17MrOc7-FXxKBWTwkzIbUoa8fvvDfPelfjByd3ZD2Wk,29446
|
460
|
+
parsl-2025.3.3.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
|
461
|
+
parsl-2025.3.3.data/scripts/process_worker_pool.py,sha256=BbVJ1PS7ZW2grz0iAPPV0BgJyRMyQ7bbXSzLzWCBkyU,41070
|
462
|
+
parsl-2025.3.3.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
463
|
+
parsl-2025.3.3.dist-info/METADATA,sha256=FiDSNMMf3JHayeZGotfxx9jG2XcVNwbF50cPkEtLBc8,4026
|
464
|
+
parsl-2025.3.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
465
|
+
parsl-2025.3.3.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
|
466
|
+
parsl-2025.3.3.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
|
467
|
+
parsl-2025.3.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|