我使用可以生成應用程序中存儲的一些數據的PDF報告的web應用程序。然而,要獲得該報告,需要點擊幾次,並與應用程序混爲一談。如何在網絡服務器上運行Python腳本
我支持這個應用程序的一組用戶(我們使用的應用程序,我們不創建應用程序),我希望他們能夠生成和查看盡可能少的點擊這個報告。幸運的是,這個Web應用程序通過RESTful API提供了大量數據。所以我做了一些腳本。
我有一個Python腳本,它使HTTP GET請求,處理JSON結果,並使用該結果數據來動態構建一個URL。這裏是我的Python代碼的簡化版本:
#!/usr/bin/env python
import requests
app_id="12345"
secret="67890"
api_url='https://api.webapp.example/some_endpoint'
resp = requests.get(api_url, auth=(app_id,secret))
json_data = resp.json()
# Simplification of the data processing I'm doing
my_data = json_data['attr1']['attr2'] + my_data_processing
# Result of the script is a link to a dynamically generated PDF
pdf_url = 'https://pdf.webapp.example/items/' + my_data
以上是我的代碼實際上有一個簡化,但它表明了相關的問題。在我的實際腳本中,我繼續通過動態構建的URL進行另一個GET。 Web應用程序根據URL的my_data
部分生成PDF,然後將該PDF寫入文件。今天工作得很好。
目前,這是一個python腳本,可以在本地機器上按需運行。不過,我想在網絡上的某個位置託管此文件,以便當用戶在其瀏覽器中點擊URL時,它會運行並生成pdf_url
,而不必在每個用戶的本地計算機上安裝此腳本,以便PDF可以在移動設備上生成並查看。
思想是用戶可以打開http://example.com/report-shortcut
,python腳本將運行服務器端,動態構建URL並將用戶重定向到該URL,然後該URL將在瀏覽器中顯示PDF(假設用戶是使用顯示諸如Chrome,Safari等PDF文件的瀏覽器)。或者,如果重定向有問題,轉至http://example.com/report-shortcut
只能顯示一個HTML頁面,其中包含指向由Python腳本生成的URL的鏈接。
我正在尋找一種解決方案,以便如何託管此Python腳本並在用戶訪問網頁時使其運行。我研究過AWS Lambda和Django,但對於這樣一個簡單的腳本(大約20行代碼,加上註釋和空白)看起來似乎過分了。我也看過Python CGI腳本,看起來很有前景,但我沒有經驗設置類似的東西。
尋找有關如何在用戶轉到示例網址時最好地託管和運行此代碼的建議。
PS:我想過只是重新在Javascript中實現,但我寧願API密鑰不公開訪問。
前端的JavaScript將是任務比較容易的方式,但如果你一定想這樣做後端服務器[瓶(http://flask.pocoo.org上/)可能更容易設置。 –