Windows .NET, Docker, Linux a Python

Windows .NET, Docker, Linux a Python
« kdy: 28. 10. 2024, 23:27:27 »
Snažím sa spustiť Python kód z .NET 8 Windows aplikácie v bežiacom kontajneri (linuxovom, kde mám interpreter Pythonu). Python kód spustím. Lenže nedokážem prečítať výstup z MultiplexedStreamu (asynchrónny zápis do MultiplexedStreamu funguje). Konkrétne aplikácia prestane reagovať na mieste, kde volám metódu:

Kód: [Vybrat]
multiplexedStream.ReadOutputToEndAsync(CancellationToken.None)
Čo s tým? Nemal by som na čítanie výstupu použiť inú read metódu ako ReadOutputToEndAsync?

Pozn: na docker sa pripájam cez npipe.


Bugsa

  • ***
  • 128
    • Zobrazit profil
    • E-mail
Re:Windows .NET docker linux a python
« Odpověď #1 kdy: 29. 10. 2024, 07:23:57 »
Problém bych viděl v tom použití ReadOutputToEndAsync. Evidentně čeká na konec streamu, ale ten nepřichází vůbec nebo není v očekávaném formátu.

JmJ

  • ****
  • 325
    • Zobrazit profil
Re:Windows .NET, Docker, Linux a Python
« Odpověď #2 kdy: 29. 10. 2024, 09:17:35 »
Mozna pomuze se mrknout do zdrojaku:

https://github.com/dotnet/Docker.DotNet/blob/master/src/Docker.DotNet/MultiplexedStream.cs

zbezne bych rekl, ze je to tak, jak rikal kolega vyse:

                    var result = await ReadOutputAsync(buffer, 0, buffer.Length, cancellationToken).ConfigureAwait(false);
                    if (result.EOF)
                    {
                        return;
                    }

Re:Windows .NET, Docker, Linux a Python
« Odpověď #3 kdy: 29. 10. 2024, 22:47:58 »
Ahojte ďakujem vám za dobré pointy.