-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtimeseries.py
More file actions
78 lines (66 loc) · 2.49 KB
/
Copy pathtimeseries.py
File metadata and controls
78 lines (66 loc) · 2.49 KB
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
75
76
77
from functools import partial
from moon import DateTime, MoonPhase
from parsedatetime import Calendar # pip install parsedatetime
from pytimeparse.timeparse import timeparse # pip install pytimeparse
from random import randrange
from time import mktime
import argparse
import httplib
def zero():
return 0
class FakeFile(object):
def __init__(self, namespace):
self.eof = False
self.start = namespace.start
self.stop = namespace.stop
self.step = namespace.step
self.nanoseconds = partial(randrange, 10**9) \
if namespace.jitter else zero
def read(self, blocksize):
if self.eof:
return ''
moonphase = MoonPhase(self.start)
result = "moon,phase=%s illumination=%.1f,age=%.1f %d%09d" % (
moonphase.phase_text.replace(' ', '-'),
moonphase.illuminated * 100,
moonphase.age,
self.start.gmticks(),
self.nanoseconds()
)
self.start += self.step
self.eof = self.start > self.stop
return result
def main():
"""Calculate phases of the moon."""
def mktime(str, _cal = Calendar()):
return DateTime.mktime(_cal.parse(str)[0])
def mkdelta(str):
return DateTime.DateTimeDeltaFromSeconds(timeparse(str))
parser = argparse.ArgumentParser(description=main.__doc__)
parser.add_argument('start', nargs='?', type=mktime,
default=DateTime.now())
parser.add_argument('stop', nargs='?', type=mktime,
default=None)
parser.add_argument('--step', nargs='?', type=mkdelta,
default=timeparse('1d'))
parser.add_argument('--jitter', action='store_true')
args_obj = parser.parse_args(['one year ago', 'now', '--step', '4w'])
if args_obj.stop is None:
args_obj.stop = args_obj.start
data = FakeFile(args_obj)
headers = {
"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain",
}
responses = set()
datablock = data.read(1024)
while datablock:
conn = httplib.HTTPConnection("192.168.32.131", 8086)
conn.request("POST", "/write?db=mydb", datablock, headers)
response = conn.getresponse()
if (response.status, response.reason) not in responses:
print response.status, response.reason
responses.add((response.status, response.reason))
datablock = data.read(1024)
if __name__ == '__main__':
main()