updated lambda to reduce traffic

This commit is contained in:
Gert Wohlgemuth 2018-06-06 18:20:26 -07:00
parent 4b92c0f848
commit f733de1662

View File

@ -46,18 +46,9 @@ def backtest(event, context):
name = event['body']['name']
user = event['body']['user']
till = datetime.datetime.today()
fromDate = till - datetime.timedelta(days=90)
days = [90]
if 'days' in event['body']:
fromDate = till - datetime.timedelta(days=event['body']['days'])
else:
if 'from' in event['body']:
fromDate = datetime.datetime.strptime(event['body']['from'], '%Y%m%d')
if 'till' in event['body']:
till = datetime.datetime.strptime(event['body']['till'], '%Y%m%d')
timerange = (till - fromDate).days
days = event['body']['days']
# by default we refresh data
refresh = True
@ -65,29 +56,24 @@ def backtest(event, context):
if 'refresh' in event['body']:
refresh = event['body']['refresh']
print("time range between dates is: {} days".format(timerange))
try:
print("schedule back testing from {} till {} for {} with {} vs {}".format(fromDate, till, name,
event['body'][
'stake_currency'],
event['body'][
'assets']))
if "ticker" in event['body']:
ticker = event['body']['ticker']
else:
ticker = '5m'
ticker = ['5m']
if "local" in event['body'] and event['body']['local']:
print("running in local mode")
configuration = generate_configuration(fromDate, till, name, refresh, user, False)
run_backtest(configuration, name, user, ticker, fromDate, till)
for x in days:
for y in ticker:
till = datetime.datetime.today()
fromDate = till - datetime.timedelta(days=x)
configuration = generate_configuration(fromDate, till, name, refresh, user, False)
run_backtest(configuration, name, user, y, fromDate, till)
else:
print("running in remote mode")
_submit_job(name, user, ticker, fromDate, till)
_submit_job(name, user, ticker, days)
return {
"statusCode": 200
@ -102,7 +88,7 @@ def backtest(event, context):
raise Exception("not a valid event: {}".format(event))
def _submit_job(name, user, ticker, fromDate, till):
def _submit_job(name, user, ticker, days):
"""
submits a new task to the cluster
@ -143,15 +129,11 @@ def _submit_job(name, user, ticker, fromDate, till):
},
{
"name": "FREQ_TICKER",
"value": "{}".format(ticker)
"value": "{}".format(json.dumps(ticker))
},
{
"name": "FREQ_FROM",
"value": "{}".format(fromDate.strftime('%Y%m%d'))
},
{
"name": "FREQ_TILL",
"value": "{}".format(till.strftime('%Y%m%d'))
"name": "FREQ_DAYS",
"value": "{}".format(json.dumps(days))
},
{
"name": "FREQ_STRATEGY",
@ -407,34 +389,29 @@ def cron(event, context):
for i in response['Items']:
# fire a message to our queue
# we want to evaluate several time spans for the strategy
for day in [1, 7, 30, 90]:
message = {
"user": i['user'],
"name": i['name'],
"assets": i['assets'],
"stake_currency": i['stake_currency'],
"local": False,
"refresh": True,
"ticker": ['5m', '15m', '30m', '1h', '2h', '4h', '6h', '12h', '1d'],
"days": [1, 2, 3, 4, 5, 6, 7, 14, 30, 90]
}
# we want to evaluate several time intervals for each strategy
for interval in ['5m', '15m', '30m', '1h']:
message = {
"user": i['user'],
"name": i['name'],
"assets": i['assets'],
"stake_currency": i['stake_currency'],
"local": False,
"refresh": True,
"ticker": interval,
"days": day
}
print("submitting: {}".format(message))
serialized = json.dumps(message, use_decimal=True)
# submit item to queue for routing to the correct persistence
print("submitting: {}".format(message))
serialized = json.dumps(message, use_decimal=True)
# submit item to queue for routing to the correct persistence
result = client.publish(
TopicArn=topic_arn,
Message=json.dumps({'default': serialized}),
Subject="schedule",
MessageStructure='json'
)
result = client.publish(
TopicArn=topic_arn,
Message=json.dumps({'default': serialized}),
Subject="schedule",
MessageStructure='json'
)
print(result)
print(result)
if 'LastEvaluatedKey' in response:
return table.scan(