2016-08-17 39 views
1

我有一個長時間運行的python腳本,我想使用node.js來顯示數據python打印(因爲我將它作爲服務器並將數據發送到在其他地方),我用python-shell,它不顯示任何東西,直到整個python完成,它有任何方式來顯示「部分」輸出?當python仍在運行時在node.js上顯示python數據

var pshell = require('python-shell'); 
var prompt = require('prompt'); 
var command = 'start'; 

prompt.start(); 
function receivecommand() { 
prompt.get(['input'], function(err, result) { 
    if(result.input == command) { 
     run(); 
     console.log('run') 
    } 
    else {console.log('type start') 
      receivecommand(); 
     } 
    }) 
} 
receivecommand(); 
function run() { 
var ps = new pshell('hello.py'); 
ps.on('message', function(message) { 
    console.log(message); 
}); 
ps.end(function(err) { 
    if (err) throw err; 
    console.log('finished') 
}); 
} 

現在hello.py只是運行一個時間延遲循環並打印出來。

+2

您是否知道[Python具有簡單的內置Web服務器]( https://docs.python.org/3/library/http.server.html)?使用它可能不如添加node.js來託管東西更復雜。 –

+1

不知道要實現的設置或任務,這個問題太廣泛了,因爲根據複雜性,可用性和可伸縮性等因素,有幾種解決方案。改變數據例如可以通過管道通過低端的不同進程或者使用消息代理人來完成。任務隊列位於可擴展性和複雜性的高端。 – albert

+1

要實現的@albert任務是顯示python腳本在運行時打印出的內容,而不是在完成時一起顯示。 – dannylinn

回答

0

最簡單的方法是使用節點js設置一個服務器,併發送帶有假定要打印的數據的請求。當然,我在這種解決方案中已經掌握了你所掌握的內容。 (您沒有提到輸出是來自您編寫的腳本還是來自其他庫或Python腳本)。

+0

我很抱歉,但我沒有看到您的解決方案 – dannylinn