Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Add RemoteSlurmJob to connect SLURMCluster to a remote Slurm cluster

Abierto
#502 14 comentarios 3 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

  • #504 de @alexandervaneck — cerrado sin fusionar

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python

Línea de trabajo

Empieza leyendo las implementaciones existentes de SlurmCluster y SlurmJob, especialmente async start, job_file, _submit_job, _job_id_from_submit_output y _close_job. Compara su comportamiento con los endpoints de submission y cancellation de la Slurm REST API; después, define el comportamiento de las requests necesario para un reemplazo remoto drop-in y verifica que la submission y la cancellation preserven el ciclo de vida existente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement SLURM

Hello 👋 Thank you for considering this feature request :) I have been looking over dask-jobqueue (together with prefect) to allocate resources on a Slurm cluster I have access to. dask-jobqueue seems exactly what we'd need for this, thank you for maintaining it 🙇

Context

In the case where Slurm and a python process (script or notebook) are not running on the same host SlurmCluster will not be able to spawn any jobs and error.

Slurm added a REST API: https://slurm.schedmd.com/rest_api.html

Feature

Could we add a RemoteSlurmCluster and RemoteSlurmJob that largely extend SlurmCluster/SlurmJob and instead of using subprocess.Popen we'd do an HTTP request instead?

class RemoteSLURMJob(SLURMJob):
    @contextmanager
    def job_file(self):
        # we don't need the script file but only the script itself. to not alter `async def start(self):` we yield the script here.
        yield self.job_script()

    async def _submit_job(self, script):
        # formatting should be according to:
        # https://slurm.schedmd.com/rest_api.html#slurmctldSubmitJob
        return requests.post('slurm-url/jobs/submit')  # reach out to API

    def _job_id_from_submit_output(self, out):
        # out is the JSON output from _submit_job request.post
        # See https://slurm.schedmd.com/rest_api.html#v0.0.36_job_submission_response
        return out['job_id']

    @classmethod
    def _close_job(cls, job_id):
        # See: https://slurm.schedmd.com/rest_api.html#slurmctldCancelJob
        requests.delete(f'slurm-url/job/{job_id}')


class RemoteSLURMCluster(SLURMCluster):
    job_cls = RemoteSLURMJob

As far as I can tell this should be a drop-in replacement.

Thoughts? (tagging @mrocklin @lesteve for visibility, hope you would have time for a review.)

Lenguaje dominante
Python
Estrellas
256
Forks
148
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dask/dask-jobqueue

Todos los issues de dask/dask-jobqueue

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.