-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathserial_runner.py
32 lines (26 loc) · 1.01 KB
/
serial_runner.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import argparse
import sys
from runner import Runner
import lib.mixpanel_data_puller as puller
class SerialRunner(Runner):
def create_parser(self):
parser = argparse.ArgumentParser(description='Serial Runner for mixpanel data pull.')
return parser
def pull_data(self, date):
if self.args.dry:
return "DRY_MODE"
return puller.pull(date, date, self.args.apikey, self.args.apisecret)
def pull_data_for_date_range(self):
start_date, end_date = self.args.startdate, self.args.enddate
for date in self.date_iter(start_date, end_date):
date = puller.stringify_date(date)
print "Pulling data for %s" % date
data_iter = self.pull_data(date)
s3_output_file = "%s%s" % (self.output_bucket, date)
self.put_s3_string_iter(data_iter, s3_output_file, zip=True)
def run(argv):
runner = SerialRunner()
runner.parse_args(argv)
runner.pull_data_for_date_range()
if __name__ == '__main__':
run(sys.argv)