我是奧斯汀一家小型創業公司的數據人員。我所做的所有分析(迄今爲止)都存儲爲一組從我的筆記本電腦運行的特別腳本。這是一個壞主意。將Python分析腳本部署到服務器
我要在這裏畫出我的計劃來部署我的分析,我想知道是否有任何我曾經錯過的明顯漏洞,或者我應該考慮的其他事情。我認爲概要我保持足夠的原子,以便能夠在需要的時間和地點插入事物,而且還允許我輕鬆地運行一個腳本。次要(長期)目標是將簡單的Web前端向上放置,以允許用戶(即我公司的員工)一次調用一個腳本,請參閱:Very simple web service: take inputs, email results。
我想將腳本部署到服務器,我正在考慮將我的腳本組織到一組python模塊中。然後,我希望我的批處理腳本如下所示:
import analysis
batch_dict = analysis.build_batch_dict()
assert sorted(batch_dict.keys()) = ['Hourly', 'Monthly', 'Nightly', 'Weekly']
scripts_to_run = analysis.what_batch() # get from command line?
results_directory = analysis.make_results_directory()
failures = {}
for script in scripts_to_run:
try:
script.analyze()
script.export_results(results_directory)
except Exception as e:
failures.update(script.failed(e))
analysis.completed(failures)
我將重寫我的分析以便它們由類處理。
class AnalysisHandler(object):
...
def analyze():
pass
def export_results(some_directory):
pass
def failed(exception):
pass
def run_with_non_default_args(*args, **kwargs):
pass
def something_else_im_missing_now():
pass
所有的腳本都會被繼承自AnalysisHandler的東西處理。
服務器上的目錄結構如下所示:
datalytics/
results/
02-14-2013/
script1/
/log
/error
/data
script2/
/log
/error
/data
.
.
.
<etc>
scripts/
script1/
bin/
data/
doc/
script_1/
tests/
setup.py
.
.
.
analysis/
__init__.py
analysis.py
batch.py (see above)
new_script.py
run_all_tests.py
run_some_tests.py
run_this_script.py
run_everything.py
某處有在這裏一個問題...... – 2013-02-14 17:10:39
「我要在這裏寫生我的計劃部署我的分析,我想知道,如果有,我已經錯過任何明顯的缺陷或者我應該考慮的其他事情。「我需要問號嗎? – BenDundee 2013-02-14 17:12:16
時髦的權限問題可能會在創建目錄時引發異常。從測試背景來看,我認爲你最好將你的for循環封裝在'with open(output)'等文件中,然後寫出結果,並存儲它們。在服務器崩潰的情況下,你至少想知道運行的是什麼,以及是否有可能你的腳本卡在無限的東西中,並啃掉所有內存等。 – pyInTheSky 2013-02-14 17:23:42