私はオースティンの小さなスタートアップでデータ担当をしています。私が (これまでに) 行ったすべての分析は、ラップトップから実行するアドホック スクリプトのセットとして保存されています。これは悪い考えです。
分析を展開するための計画をここにスケッチします。見落としている明白な穴があるかどうか、または考慮すべき他の何かがあるかどうかを知りたいです。私が持っているアウトラインは、必要なときに必要な場所にプラグインできるように十分にアトミックに保たれていると思いますが、1 つのスクリプトを非常に簡単に実行することもできます。二次的な (長期的な) 目標は、ユーザー (つまり、私の会社の従業員) が一度に 1 つずつスクリプトを呼び出せるようにする単純な 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