2013-11-09 64 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

前者我想做。 –

相关问题