मैं एक निष्पादन वातावरण/खोल बनाने की कोशिश कर रहा हूं जो एक सर्वर पर दूरस्थ रूप से निष्पादित करेगा, जो ब्राउज़र में प्रस्तुत सॉकेट पर stdout, err को स्ट्रीम करता है। मैंने वर्तमान में PIPE
के साथ subprocess.run
का उपयोग करने का प्रयास किया है। समस्या यह है कि प्रक्रिया पूरी होने के बाद मुझे stdout मिलता है। मैं जो हासिल करना चाहता हूं वह एक लाइन-बाय-लाइन, छद्म-टर्मिनल प्रकार के कार्यान्वयन को प्राप्त करना है।लाइव कंसोल बनाने के लिए पायथन की पीटीआई का उपयोग करें
मेरे वर्तमान कार्यान्वयन
test.py
def greeter():
for _ in range(10):
print('hello world')
greeter()
और खोल में
>>> import subprocess
>>> result = subprocess.run(['python3', 'test.py'], stdout=subprocess.PIPE)
>>> print(result.stdout.decode('utf-8'))
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
तो मैं pty
साथ भी इस सरल कार्यान्वयन प्रयास करते हैं, कैसे करता है करने के लिए प्रयास एक ऐसा करता है?
चेक इस बाहर: https://stackoverflow.com/questions/1606795/catching-stdout-in-realtime-from-subprocess –
'का उपयोग कर bufsize = 1' पैरामीटर लाइन बफर सेट करने के लिए उपप्रक्रिया करने की कोशिश करो, और प्रयोग' आईटीईआर (result.stdout.readline, b '') ट्रू लूप – Vinny