Open Canas opened 6 years ago
The Report API supports Data Warehouse delivery to FTP. This works well with the package since I can just pass the FTP config as kwargs:
report_definition = ReportDefinition( dimensions="page", metrics="pageviews", date_from="2018-08-25", date_to="2018-08-25", source="warehouse", ftp=dict(host="HOST", port=21, directory="PATH", username="USER", password="PASS", filename="FILE") )
but once the delivery completes the library throws the following exception.
--------------------------------------------------------------------------- Exception Traceback (most recent call last) <timed exec> in <module>() ~/Repositories/adobe_analytics/adobe_analytics/reports/suite.py in download(self, obj) 16 def download(self, obj): 17 """ obj can be ReportDefinition, report_id (int or float) """ ---> 18 return self._downloader.download(obj) 19 20 def queue(self, definition): ~/Repositories/adobe_analytics/adobe_analytics/reports/report_downloader.py in download(self, obj) 18 def download(self, obj): 19 report_id = self._to_report_id(obj) ---> 20 first_response = self.get_report(report_id) 21 raw_responses = [first_response] 22 ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/retrying.py in wrapped_f(*args, **kw) 47 @six.wraps(f) 48 def wrapped_f(*args, **kw): ---> 49 return Retrying(*dargs, **dkw).call(f, *args, **kw) 50 51 return wrapped_f ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/retrying.py in call(self, fn, *args, **kwargs) 204 205 if not self.should_reject(attempt): --> 206 return attempt.get(self._wrap_exception) 207 208 delay_since_first_attempt_ms = int(round(time.time() * 1000)) - start_time ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/retrying.py in get(self, wrap_exception) 245 raise RetryError(self) 246 else: --> 247 six.reraise(self.value[0], self.value[1], self.value[2]) 248 else: 249 return self.value ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/six.py in reraise(tp, value, tb) 691 if value.__traceback__ is not tb: 692 raise value.with_traceback(tb) --> 693 raise value 694 finally: 695 value = None ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/retrying.py in call(self, fn, *args, **kwargs) 198 while True: 199 try: --> 200 attempt = Attempt(fn(*args, **kwargs), attempt_number, False) 201 except: 202 tb = sys.exc_info() ~/Repositories/adobe_analytics/adobe_analytics/reports/report_downloader.py in get_report(self, report_id, page_number) 62 data={ 63 "reportID": report_id, ---> 64 "page": page_number 65 } 66 ) ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/retrying.py in wrapped_f(*args, **kw) 47 @six.wraps(f) 48 def wrapped_f(*args, **kw): ---> 49 return Retrying(*dargs, **dkw).call(f, *args, **kw) 50 51 return wrapped_f ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/retrying.py in call(self, fn, *args, **kwargs) 210 if not self._wrap_exception and attempt.has_exception: 211 # get() on an attempt with an exception should cause it to be raised, but raise just in case --> 212 raise attempt.get() 213 else: 214 raise RetryError(attempt) ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/retrying.py in get(self, wrap_exception) 245 raise RetryError(self) 246 else: --> 247 six.reraise(self.value[0], self.value[1], self.value[2]) 248 else: 249 return self.value ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/six.py in reraise(tp, value, tb) 691 if value.__traceback__ is not tb: 692 raise value.with_traceback(tb) --> 693 raise value 694 finally: 695 value = None ~/Programs/miniconda3/envs/f2/lib/python3.6/site-packages/retrying.py in call(self, fn, *args, **kwargs) 198 while True: 199 try: --> 200 attempt = Attempt(fn(*args, **kwargs), attempt_number, False) 201 except: 202 tb = sys.exc_info() ~/Repositories/adobe_analytics/adobe_analytics/client.py in request(self, api, method, data) 55 logger.debug("Response: {}".format(json_response)) 56 if isinstance(json_response, dict) and ("error" in json_response): ---> 57 self.raise_error(json_response) 58 return json_response 59 ~/Repositories/adobe_analytics/adobe_analytics/client.py in raise_error(response) 87 raise FileNotFoundError(error_description) 88 else: ---> 89 raise Exception(error_description) 90 91 def __repr__(self): Exception: Delivery complete
As the Exception says, the delivery is fine, and the file does show in the FTP server, but this shouldn't be an Exception.
Yeah, that obviously shouldn't happen. You're very welcome to submit a PR that fixes this.
The Report API supports Data Warehouse delivery to FTP. This works well with the package since I can just pass the FTP config as kwargs:
but once the delivery completes the library throws the following exception.
As the Exception says, the delivery is fine, and the file does show in the FTP server, but this shouldn't be an Exception.