2013-11-09 106 views
1

認爲我需要幾個項目它事件驅動的編程。這導致我Twisted(Python)和Node.js(Javascript)。Twisted如何與命令行程序交互?可以Node.js?

我需要做的一件事就是與命令行程序進行交互,這些命令行程序需要花時間完成並隨時打印標準輸出。

我發現Twisted沒有好的教程,並且我沒有發現如何使用非網絡相關的編程獲得Twisted。

問題:

有沒有一個教程,涵蓋非網絡的東西與扭曲?

我應該更好地看看Node.js嗎?如果是這樣,爲什麼?

是否有替代事件驅動的編程更好地抽象出問題? (我知道,有很多抽象它更糟糕;請不要提及它們:-)

回答

0

除非你需要對套接字事件或gui事件做出反應,否則你真的不需要扭曲。如果您正在等待用戶輸入數據,那麼標準命令外殼程序或repl設計將起作用。這些應用程序純粹是同步的。

當然,如果你是在談論從一個守護進程運行的子進程(或以其他方式已經運行扭曲的應用程序),https://twistedmatrix.com/documents/current/core/howto/process.html

+0

我需要一次與數十個命令行程序進行交互。 - 它不是守護進程,我不等待用戶輸入,也不是同步的。 - 但鏈接很好。 :-) –

+0

編輯澄清該鏈接不僅適用於守護進程,而且適用於任何扭曲的應用程序。扭曲的應用程序通常是守護進程,因此我假設這是使用扭曲的用例,但絕不僅僅是守護進程,或者非守護進程很難扭曲。 – Tritium21

+0

有人甚至低估了你的答案? (我給了一個+1。) - 但我仍然認爲整個答案都是垃圾,除了鏈接。爲什麼? Twisted有很多場景。不只是套接字,GUI和守護進程,那麼爲什麼堅持說_I_不需要Twisted? –

0

如果你希望你的扭曲的應用程序通過調用他們的命令行程序進行交互和捕獲他們的輸出,你可以用Tritium21鏈接中描述的spawnProcess來做到這一點。它異步運行,所以你的Twisted應用程序將進行處理,並可以在此期間運行其他程序。

如果你想運行一個命令行程序,它會對Twisted應用程序產生一些影響,你可以使用Twisted listen on a socket並讓程序連接到它來發送命令。同樣,Twisted可以同時與許多程序對話,只要您可以異步編寫處理代碼。與服務器交談的一個非常好的方法是AMP,Asynchronous Messaging Protocol

當然,同一個應用程序可以同時執行這兩件事,還有更多。

+0

前者我想做。 –

相關問題