CSHS-CWRA / RavenPy

A Python wrapper to setup and run the hydrologic modelling framework Raven
https://ravenpy.readthedocs.io
MIT License
26 stars 5 forks source link

process.wait() does not seem to wait enough #419

Open TC-FF opened 4 days ago

TC-FF commented 4 days ago

Setup Information

Description

in ravenpy.py,

      process = subprocess.Popen(  # noqa: S603
        cmd,
        cwd=configdir,
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        universal_newlines=True,
    )`

       stdout, stderr = process.communicate(input="\n")
       returncode = process.wait()

This part of code does not seem to wait enough, it keeps crashing semi-randomly. If I put a breakpoint and wait or resend the lines, it does not crash.

Steps To Reproduce

No response

Additional context

No response

Contribution

huard commented 4 days ago

Salut T-C, Merci pour le rapport. RavenPy n'a pas été beaucoup utilisé sur windows, donc pas tellement surpris qu'il y ait des accrocs.

Je n'ai pas vraiment d'idée sur la cause du problème. Peut-être qu'il y a des pistes ici: https://docs.python.org/3/library/subprocess.html#windows-popen-helpers

TC-FF commented 4 days ago

Ce matin on a aussi fait des tests, avec Charles, étrangement, ça passe le premier coup, mais pas par la suite. J'avais eu ça de mon côté, mais croyais avoir été chanceux. Ça semble au contraire faire parti du patern. Je vais regarder ton lien et voir ce qu'on peut faire. Si je trouve, est ce qu'un truc genre if os.name == 'nt' est correct ou ce n'est pas assez robuste ?

huard commented 4 days ago

Intéressant, peut-être que RavenPy ne "ferme" pas proprement un processus ou un PIPE.

Si ça règle le problème, ça me va.