fix: cron date calculation

Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
This commit is contained in:
Ameya Shenoy 2021-02-15 00:40:56 +05:30
parent 867933c2c6
commit d79a13b080
Signed by: codingcoffee
GPG key ID: F7D58AAC5DACF8D3
2 changed files with 12 additions and 9 deletions

View file

@ -27,4 +27,3 @@ class AppConfig(AppConfig):
repeat=None, repeat=None,
) )

View file

@ -53,6 +53,8 @@ def fetch_bhav_copy_equity_data(date=None):
def populate_bhav_copy_data(date=None): def populate_bhav_copy_data(date=None):
"""Populate DB with Bhav Copy data.""" """Populate DB with Bhav Copy data."""
if date is None:
date = datetime.datetime.now().date()
try: try:
data = fetch_bhav_copy_equity_data(date=date) data = fetch_bhav_copy_equity_data(date=date)
except Exception as err: except Exception as err:
@ -72,11 +74,11 @@ def populate_bhav_copy_data(date=None):
def populate_bhav_copy_data_into_redis_v1(data=None, date=None): def populate_bhav_copy_data_into_redis_v1(data=None, date=None):
if date is None:
raise ValueError("Date is required")
if data is None: if data is None:
data = fetch_bhav_copy_equity_data(date=date) data = fetch_bhav_copy_equity_data(date=date)
del data[0] del data[0]
if date is None:
date = datetime.datetime.now().date()
logger.info('Populating data into redis') logger.info('Populating data into redis')
datestr = date.strftime("%d%m%y") datestr = date.strftime("%d%m%y")
pipe = cache.pipeline() pipe = cache.pipeline()
@ -95,11 +97,12 @@ def populate_bhav_copy_data_into_redis_v1(data=None, date=None):
def populate_bhav_copy_data_into_redis_v2(data=None, date=None): def populate_bhav_copy_data_into_redis_v2(data=None, date=None):
if date is None:
raise ValueError("Date required.")
if data is None: if data is None:
data = fetch_bhav_copy_equity_data(date=date) data = fetch_bhav_copy_equity_data(date=date)
del data[0] del data[0]
if date is None: logger.info('Populating data into redis v2')
date = datetime.datetime.now().date()
datestr = date.strftime("%d%m%y") datestr = date.strftime("%d%m%y")
data = stocks_csv_to_json(data) data = stocks_csv_to_json(data)
stocks_key = f"stocks:v2:{datestr}" stocks_key = f"stocks:v2:{datestr}"
@ -110,11 +113,11 @@ def populate_bhav_copy_data_into_redis_v2(data=None, date=None):
@transaction.atomic @transaction.atomic
def populate_bhav_copy_data_into_postgres(data=None, date=None): def populate_bhav_copy_data_into_postgres(data=None, date=None):
logger.info('Populating data into postgres for %s', date) logger.info('Populating data into postgres for %s', date)
if date is None:
raise ValueError("Date required")
if data is None: if data is None:
data = fetch_bhav_copy_equity_data(date=date) data = fetch_bhav_copy_equity_data(date=date)
del data[0] del data[0]
if date is None:
date = datetime.datetime.now().date()
data = stocks_csv_to_json(data) data = stocks_csv_to_json(data)
for stock in data: for stock in data:
stock['date'] = date stock['date'] = date
@ -143,7 +146,7 @@ def stocks_csv_to_json(data):
return stocks return stocks
def verify_date(date, ret_message) -> Tuple[datetime.datetime, str]: def verify_date(date: str, ret_message: str) -> Tuple[datetime.datetime, str]:
"""Verify current date. """Verify current date.
Check current date and time and return the appropriate date. Also take care Check current date and time and return the appropriate date. Also take care
@ -171,7 +174,8 @@ def verify_date(date, ret_message) -> Tuple[datetime.datetime, str]:
ret_message = "Markets are closed on weekends. Returning data for Friday." ret_message = "Markets are closed on weekends. Returning data for Friday."
req_datetime -= datetime.timedelta(days=day_num-4) # change req to Friday req_datetime -= datetime.timedelta(days=day_num-4) # change req to Friday
# Check for day # Check for day
if req_datetime.date() == curr_datetime.date() and curr_datetime < next_publish_time: if (req_datetime.date() == curr_datetime.date()
and curr_datetime < next_publish_time):
ret_message = "Today's data not yet published, returning yesterday's data." ret_message = "Today's data not yet published, returning yesterday's data."
req_datetime -= datetime.timedelta(days=1) req_datetime -= datetime.timedelta(days=1)
return req_datetime, ret_message return req_datetime, ret_message