2014-10-07 110 views
1

我有一個需要使用python腳本的java web應用程序。 Web應用程序將爲腳本提供一個文件作爲輸入,並將一些文本作爲輸出。在命令行或Rest客戶端執行腳本

我有兩個選擇:

  1. 包裹python腳本與HTTP和Web應用程序調用它作爲REST服務
  2. 簡單地從Web應用程序

執行命令行哪我應該選擇,爲什麼?該腳本不會被其他應用程序使用。

+0

這取決於,有些人可能會暴露腳本和鏈接休息調用,從另一方面,有單獨的休息電話增加可擴展性和可移植性的問題,你會更容易從Python切換到其他。還有第三種選擇,因爲您將問題標記爲java,我假設您的後端在java下運行,您是否嘗試過jython或其他端口 – user902383 2014-10-07 12:32:46

+0

即使您用HTTP包裝它,是不是在執行REST時呼叫到達服務器? – 2015-02-21 19:31:52

回答

0

嘗試這兩種方法,但嘗試在命令行中執行以逐行了解輸出。 你可以發現任何錯誤在該行將執行 而在rest服務它將返回給你一個Http響應。

0

我個人建議將Python代碼包裝在HTTP層中,並將其轉換爲REST Web服務。我不懷疑,許多成功的應用程序是通過從命令行調用腳本編寫的,但是我認爲當涉及到Web服務的自由時,有幾件事情真的很棒。看起來把Python應用程序放在Web服務中似乎是更「面向服務」的方式,所以期望這樣做會給你帶來SOA的典型好處似乎是合理的。

這可能會也可能不會適用於您的情況,但如果這些考慮都不適用,似乎指出這是一種「兩種選擇都不好」的情況。

我認爲使用Web服務最大的意義是可伸縮性。如果命令行應用程序可以咀嚼大量服務器資源,則最好將它與Web應用程序在單獨的服務器上運行。這樣,當其他用戶執行導致Python應用程序被調用的事情時,沒有使用與此Python應用程序交互的應用程序部分的其他用戶不會減少他們的體驗。將Python代碼放在​​Web服務後面也會使羣集更容易。如果這種情況可以從緩存中獲得一些好處,那麼利用HTTP和代理服務器中的緩存機制也很容易。

可能更好的另一件事是可測性。有許多優秀的工具可用於測試Web應用程序與Web服務交互的常見情況,而在您調用命令行應用程序時對應用程序進行徹底測試可能需要更多工作。