我是奥斯汀一家小型初创公司的数据专家。我所做的所有分析(到目前为止)都存储为一组我在笔记本电脑上运行的临时脚本。这是一个坏主意。
我将在这里草拟我的计划以部署我的分析,并且我想知道是否有任何我遗漏的明显漏洞,或者我应该考虑的其他任何事情。我认为我的大纲保持了足够的原子性,以便我可以在需要的时间和地点插入东西,而且还允许我很容易地运行一个脚本。次要(长期)目标是建立一个简单的 Web 前端,允许用户(即我公司的员工)一次调用一个脚本,请参见此处:非常简单的 Web 服务:接受输入,电子邮件结果。
我想将脚本部署到服务器,并且正在考虑将我的脚本组织成一组 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