-
Notifications
You must be signed in to change notification settings - Fork 0
/
transaction_data.py
74 lines (53 loc) · 2.1 KB
/
transaction_data.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on Dec 17, 2015
@author: Sébastien Brennion LeanBi
'''
import urllib
from os import environ
import logging
from object_storage import object_storage
import urllib
import time
import datetime
from string import Template
class transaction_data():
def __init__(self,**kwargs):
self.base_url=environ.get("URL_DATA_TRANSACTION",None)
self.storage=object_storage()
self.intverval=environ.get("REST_POLLING_INTERVAL",30)
self.file_name=environ.get("FILE_BASE_NAME","myFile-$date.txt")
self.file_date_format=environ.get("FILE_DATE_FORMAT","%Hh%M")
self.dir_name=environ.get("DIR_BASE_NAME","myDir-$date")
self.dir_date_format=environ.get("DIR_DATE_FORMAT","%Y-%m-%d")
def run(self):
try:
while True:
data=self.get_data()
self.store(data)
time.sleep(float(self.intverval))
except Exception as e:
logging.exception(e)
def get_data(self):
logging.info("requesting : %s" % self.base_url)
response=urllib.urlopen(self.base_url)
response_str=response.read()
return response_str
def get_file_and_directory(self):
now=datetime.datetime.now()
dir_date={"date":now.strftime(self.dir_date_format)}
dir_name=Template(self.dir_name).safe_substitute(dir_date)
file_date={"date":now.strftime(self.file_date_format)}
file_name=Template(self.file_name).safe_substitute(file_date)
return dir_name, file_name
def store(self,myString,**kwargs):
d,f =self.get_file_and_directory()
fileName="%s/%s/%s" %(environ.get("S3_KEY"),d , f)
logging.debug("storing in file %s" % fileName)
self.storage.put(environ["S3_BUCKET"],fileName,myString)
if __name__ == '__main__':
logging.basicConfig(format='%(asctime)s %(levelname)7s %(lineno)s %(name)s - %(message)s',
level=getattr(logging,environ.get("LOG_LEVEL","INFO"))
)
transaction_data().run()