11import logging
22import random
3+ import sys
4+ import datetime
5+ import time
36
47from celery import shared_task
58from celery .exceptions import Ignore , Reject
69from dateutil import parser
710from django .core .cache import cache
811from django .db import transaction
12+ from django .utils .timezone import utc
913from fitbit .exceptions import HTTPBadRequest , HTTPTooManyRequests
1014
1115from . import utils
@@ -57,13 +61,13 @@ def get_time_series_data(self, fitbit_user, cat, resource, date=None):
5761 resource , cat ))
5862 raise Reject (e , requeue = False )
5963
60- # Create a lock so we don't try to run the same task multiple times
61- sdat = date .strftime ('%Y-%m-%d' ) if date else 'ALL'
62- lock_id = '{0}-lock-{1}-{2}-{3}' .format (__name__ , fitbit_user , _type , sdat )
63- if not cache .add (lock_id , 'true' , LOCK_EXPIRE ):
64- logger .debug ('Already retrieving %s data for date %s, user %s' % (
65- _type , fitbit_user , sdat ))
66- raise Ignore ()
64+ # # Create a lock so we don't try to run the same task multiple times
65+ # sdat = date.strftime('%Y-%m-%d') if date else 'ALL'
66+ # lock_id = '{0}-lock-{1}-{2}-{3}'.format(__name__, fitbit_user, _type, sdat)
67+ # if not cache.add(lock_id, 'true', LOCK_EXPIRE):
68+ # logger.debug('Already retrieving %s data for date %s, user %s' % (
69+ # _type, fitbit_user, sdat))
70+ # raise Ignore()
6771
6872 try :
6973 with transaction .atomic ():
@@ -108,7 +112,8 @@ def get_time_series_data(self, fitbit_user, cat, resource, date=None):
108112 raise Reject (e , requeue = False )
109113
110114
111- def get_intraday_data (fitbit_user , cat , resource , date , tz_offset , start_time = None , end_time = None ):
115+ @shared_task (bind = True )
116+ def get_intraday_data (self , fitbit_user , cat , resource , date , tz_offset , start_time = None , end_time = None ):
112117 """
113118 Get the user's intraday data for a specified date, convert to UTC prior to
114119 saving.
@@ -128,14 +133,15 @@ def get_intraday_data(fitbit_user, cat, resource, date, tz_offset, start_time=No
128133 raise Reject (sys .exc_info ()[1 ], requeue = False )
129134
130135 # Create a lock so we don't try to run the same task multiple times
131- sdat = date .strftime ('%Y-%m-%d' )
136+ # sdat = date.strftime('%Y-%m-%d')
132137
133138 fbusers = UserFitbit .objects .filter (fitbit_user = fitbit_user )
134139 dates = {'base_date' : date , 'period' : '1d' }
135140 try :
136141 with transaction .atomic ():
137142 for fbuser in fbusers :
138- data = utils .get_fitbit_data (fbuser , _type , return_all = True , start_time = start_time , end_time = end_time ,
143+ data = utils .get_fitbit_data (fbuser , _type , start_time = start_time ,
144+ end_time = end_time ,
139145 ** dates )
140146 resource_path = _type .path ().replace ('/' , '-' )
141147 key = resource_path + "-intraday"
@@ -146,8 +152,8 @@ def get_intraday_data(fitbit_user, cat, resource, date, tz_offset, start_time=No
146152 intraday = data [key ]['dataset' ]
147153 logger .info ("Date for intraday task: {}" .format (date ))
148154 for minute in intraday :
149- datetime = parser .parse (minute ['time' ], default = date )
150- utc_datetime = datetime + timedelta (hours = tz_offset )
155+ date_time = parser .parse (date [: 10 ] + ' ' + minute ['time' ])
156+ utc_datetime = date_time + datetime . timedelta (hours = tz_offset )
151157 utc_datetime = utc_datetime .replace (tzinfo = utc )
152158 value = minute ['value' ]
153159 # Don't create unnecessary records
0 commit comments