從終端
回答
你在問什麼叫做CGI。 Python有一個模塊是:
http://docs.python.org/library/cgi.html
但CGI現在是有點過時,因爲它通常是一個非常低效的方法來服務於Python應用程序。您最好使用某種類型的python web framework。
支持CGI可經配置以解譯URL ,它用作到一個CGI腳本的參考的Web服務器。一個常見的約定是 在目錄樹的底部有一個cgi-bin /目錄,並且 將其中的所有可執行文件視爲CGI腳本。另一個受歡迎的 約定是使用文件擴展名;例如,如果CGI腳本 一致地被賦予了擴展名.cgi,則web服務器可以是 ,其被配置爲將所有這些文件解釋爲CGI腳本。
對於 HTTP PUT或POST,用戶提交的數據通過標準輸入提供給程序 。 Web服務器創建一個小而有效的傳遞給它的環境變量的子集,並添加與程序執行相關的詳細信息 。
如何適用於你的問題是,你的script.py
需要先住你的Web服務器被配置爲識別的類型cgi-bin
或類似的位置內。其次,您需要使用cgi
python模塊來訪問參數(並且符合請求/響應格式)
查看Python docs以獲取有關在Web中使用Python的有用信息。
該接口通常被稱爲「CGI」,是最古老的,並且幾乎每個開箱即用的網絡服務器都支持 。對於每個請求,使用 CGI與其Web服務器進行通信的程序需要由 服務器啓動。所以,每個請求都會啓動一個新的Python解釋器 - 這需要一段時間才能啓動 - 因此整個接口只能用於低負載情況。
CGI的好處在於它很簡單 - 編寫一個使用CGI的Python程序 約三行代碼。 這個簡單的代價是:它幫助 的開發者做了很少的事情。
不再推薦編寫CGI程序,儘管可能。 由於WSGI是本文稍後討論的主題,因此可以使用 編寫仿效CGI的程序,因此如果沒有可用的更好選項,它們可以作爲CGI運行。
有newer alternatives服務於CGI的目的,沒有一些缺點。
FastCGI和SCGI試圖以另一種方式解決CGI的性能問題 。他們不會將解釋器嵌入到Web服務器中,而是創建長時間運行的後臺進程。網絡服務器中仍有一個模塊 ,這使得網絡服務器 可以與後臺進程「說話」。由於後臺進程是獨立於服務器的 ,因此可以用包括Python的任何語言 來編寫。該語言只需要有一個庫,其中 處理與網絡服務器的通信。
FastCGI和SCGI之間的區別非常小,因爲SCGI實質上只是一個「更簡單的FastCGI」。由於SCGI的網頁服務器支持有限,所以大多數人使用FastCGI,它與 的工作方式相同。幾乎所有適用於SCGI的東西都適用於FastCGI,因爲我們只會涵蓋後者。
你想讓它在客戶端或服務器上運行嗎?(這會返回結果)?
如果你想在客戶端運行它,它將不得不以某種方式下載。一個簡單的方法是下載,運行,刪除:
$ wget blahblah.com/script.py && (python script.py; rm script.py)
如果你想在服務器上運行這個,你可以使用其他人提到的CGI。取決於你想要做什麼,你可能想使用一個web框架。
對於輕量級框架檢出Flask。他們的文檔非常優秀,我設法在一天內完成並運行一些東西(我對Python和Web服務器都相當陌生)。
這裏就是你要找的內容:
wget -qO- https://gist.githubusercontent.com/mattwarrenrnp/6ca5bbeb4959974fb4ac/raw/23196eba76b1f21210f530a05572e38349384e0d/print.py | python -
解釋:
-q安靜模式隱藏的錯誤從試圖解釋爲蟒蛇
O-會直接下載到標準輸出
pipe stdout to python '-'告訴它從標準輸入執行。
警告:始終確保您信任您以這種方式運行的腳本。
由於您沒有提到您的終端中使用了哪種類型的shell。我假設你正在使用/bin/bash
。那麼這裏就是你在找什麼:
python <(wget https://bootstrap.pypa.io/get-pip.py -q -O-)
其中
-q
安靜(無輸出)。
-O-
寫入文件,標準輸入
<
標準輸入重定向
- 1. 從終端
- 2. 從終端
- 3. 從終端
- 4. 從Java終端
- 5. 從Linux終端
- 6. 從終端
- 7. 從終端MAC終止SSH
- 8. 無法從終端
- 9. 如何從終端
- 10. 如何從終端
- 11. 如何從終端
- 12. 如何從終端
- 13. 從當前終端
- 14. 除去從終端
- 15. 終端:從文件
- 16. 直接從終端
- 17. 無法從終端
- 18. 從終端安裝
- 19. 當我從終端
- 20. 從其他終端
- 21. 在終端中從linux終止python interpeter
- 22. Android從終端終止應用程序
- 23. 從終端自動終止java進程
- 24. Golang:如何從終端終止bufio Scan()?
- 25. 從終端運行java:NoClassDefFoundError
- 26. 從終端歸檔項目
- 27. 無法從終端輸入
- 28. 從OSX終端運行iPython
- 29. 行家,如何從終端
- 30. 的AppleScript不從終端
技術上講,它會下載一個或其他方式。無法訪問您無法閱讀的內容。 – TheZ 2012-07-06 21:37:49
@TheZ:那不是真的。服務器端執行腳本就是這樣做的。執行服務器端。你會得到的是執行的結果。不是原始文件。 – jdi 2012-07-06 21:42:37
@jdi那臺服務器正在做什麼?首先將文件下載到磁盤。 – TheZ 2012-07-06 21:44:08