2017-02-14 2 views
0

Mit der Verwendung von docker-compose und python:2.7 läuft es korrekt, wenn nur while 1 Schleife und time.sleep(1) getrennt ausgeführt wird.Docker bleibt beim Ausführen von time.sleep (1) in einer Python-Schleife

Aber es bleibt stecken, wenn sie zusammen ausgeführt werden. Hier

ist die Docker-Version und der Inhalt der Datei auf meinem mac

tmp docker -v 
Docker version 1.12.5, build 7392c3b 
tmp cat docker-compose.yml 
version: '2' 
services: 
    test: 
     image: python:2.7 
     command: [python, -c, "print 0\nwhile 1:\n\tprint 1\n\tbreak"] 
tmp docker-compose up 
Creating network "tmp_default" with the default driver 
Creating tmp_test_1 
Attaching to tmp_test_1 
test_1 | 0 
test_1 | 1 
tmp_test_1 exited with code 0 
tmp cat docker-compose.yml 
version: '2' 
services: 
    test: 
     image: python:2.7 
     command: [python, -c, "print 0\nimport time\nprint time.sleep(1)"] 
tmp docker-compose up 
Recreating tmp_test_1 
Attaching to tmp_test_1 
test_1 | 0 
test_1 | None 
tmp_test_1 exited with code 0 
tmp cat docker-compose.yml 
version: '2' 
services: 
    test: 
     image: python:2.7 
     command: [python, -c, "print 0\nimport time\nwhile 1:\n\tprint time.sleep(1)"] 
tmp docker-compose up 
Recreating tmp_test_1 
Attaching to tmp_test_1 

und hier ist es Stuck.

Ich hoffe, den Grund und die Methode zu kennen, um es zu beheben, danke.

Antwort

1

hinzufügen -u Flagge zu Python, um ungepufferte stdout zu haben:

command: [python, -uc, "print 0\nimport time\nwhile 1:\n\tprint time.sleep(1)"] 
+0

Es funktioniert. Und in Manpage von Python gibt es Details über die interne Pufferung. Vielen Dank. – Roy

Verwandte Themen