本文整理汇总了Python中tempodb.Client.get_series方法的典型用法代码示例。如果您正苦于以下问题:Python Client.get_series方法的具体用法?Python Client.get_series怎么用?Python Client.get_series使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tempodb.Client
的用法示例。
在下文中一共展示了Client.get_series方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: init_tempo
# 需要导入模块: from tempodb import Client [as 别名]
# 或者: from tempodb.Client import get_series [as 别名]
def init_tempo(api_key, api_secret):
client = Client(api_key, api_secret)
client.create_series('temp1')
series1 = client.get_series(keys='temp1')
if (len(series1) == 1):
series1[0].tags = ["temp"]
series1[0].attributes = {
"source":"Thermostat",
"description":"Nest",
"location":"1st_Floor"
}
client.update_series(series1[0])
client.create_series('temp2')
series2 = client.get_series(keys='temp2')
if (len(series2) == 1):
series2[0].tags = ["temp"]
series2[0].attributes = {
"source":"Weather Station",
"description":"Weather Underground",
"city":"Northwood",
"state":"CA",
"location":"Outdoor"
}
client.update_series(series2[0])
client.create_series('temp3')
series3 = client.get_series(keys='temp3')
if (len(series3) == 1):
series3[0].tags = ["temp"]
series3[0].attributes = {
"source":"Temp Sensor",
"description":"Raspberry Pi",
"location":"2nd_Floor"
}
client.update_series(series3[0])
client.create_series('temp4')
series4 = client.get_series(keys='temp4')
if (len(series4) == 1):
series4[0].tags = ["temp"]
series4[0].attributes = {
"source":"Temp Sensor",
"description":"Arduino",
"location":"Attic"
}
client.update_series(series4[0])
return client
示例2: TempoDBArchive
# 需要导入模块: from tempodb import Client [as 别名]
# 或者: from tempodb.Client import get_series [as 别名]
class TempoDBArchive(object):
def __init__(self, api_key, api_secret, interval=INTERVAL,
keep_days=KEEP_DAYS):
self.keep_days = datetime.timedelta(days=keep_days)
self.interval = datetime.timedelta(hours=interval)
self.client = Client(api_key, api_secret)
def get_series_keys(self):
try:
return self._series_keys
except AttributeError:
self._series_keys = [p.key for p in self.client.get_series()]
return self._series_keys
def get_datapoints(self, series_key, delete=False):
ts = datetime.datetime.utcnow()
end = datetime.datetime(ts.year, ts.month, ts.day) - self.keep_days
while True:
start = end - self.interval
data = self.client.read_key(series_key, start, end, tz='UTC')
yield data.data
if not data.data:
break
if delete:
self.client.delete_key(series_key, start, end)
end = start
def write_sqlite(self, series_key, data, filename=DEFAULT_DATABASE_NAME):
conn = sqlite3.connect(filename)
cur = conn.cursor()
# I know this might possibly run untrusted code but I'm not aware of
# a built-in method for escaping identifiers and this is just an
# archive tool.
query = '''CREATE TABLE IF NOT EXISTS "{0}" (
timestamp text UNIQUE NOT NULL,
value real NOT NULL)'''.format(series_key)
cur.execute(query)
query = 'INSERT INTO "{0}" values (?, ?)'.format(series_key)
with conn:
[cur.execute(query, (str(reading.ts), reading.value))
for reading in data]
conn.close()
def archive(self, series=None, delete=False):
if series in (None, []):
series_keys = self.get_series_keys()
elif isinstance(series, str):
series_keys = (series,)
else:
series_keys = series
for key in series_keys:
if key not in self.get_series_keys():
print('Series {0} does not exist'.format(key))
continue
self.archive_series(key, delete)
def archive_series(self, series_key, delete=False):
start = datetime.datetime.utcnow() - self.keep_days
start_date = datetime.datetime(start.year, start.month, start.day)
for day, data in enumerate(self.get_datapoints(series_key, delete), 1):
delta = self.interval * day
archive_date = (start_date - delta).strftime("%Y-%m-%d")
print('Archiving {0} for day {1}'.format(series_key, archive_date))
try:
self.write_sqlite(series_key, data)
except sqlite3.IntegrityError:
print('Skipping', archive_date)
示例3: ClientTest
# 需要导入模块: from tempodb import Client [as 别名]
# 或者: from tempodb.Client import get_series [as 别名]
class ClientTest(TestCase):
def setUp(self):
self.client = Client('key', 'secret', 'example.com', 443, True)
self.client.session = mock.Mock()
self.headers = {
'User-Agent': 'tempodb-python/%s' % tempodb.get_version(),
'Accept-Encoding': 'gzip',
}
self.get_headers = self.headers
self.delete_headers = self.headers
self.put_headers = dict({
'Content-Type': 'application/json',
}, **self.headers)
self.post_headers = self.put_headers
def test_init(self):
client = Client('key', 'secret', 'example.com', 80, False)
self.assertEqual(client.key, 'key')
self.assertEqual(client.secret, 'secret')
self.assertEqual(client.host, 'example.com')
self.assertEqual(client.port, 80)
self.assertEqual(client.secure, False)
def test_defaults(self):
client = Client('key', 'secret')
self.assertEqual(client.host, 'api.tempo-db.com')
self.assertEqual(client.port, 443)
self.assertEqual(client.secure, True)
def test_port_defaults(self):
""" 80 is the default port for HTTP, 443 is the default for HTTPS """
client = Client('key', 'secret', 'example.com', 80, False)
self.assertEqual(client.build_full_url('/etc'), 'http://example.com/v1/etc')
client = Client('key', 'secret', 'example.com', 88, False)
self.assertEqual(client.build_full_url('/etc'), 'http://example.com:88/v1/etc')
client = Client('key', 'secret', 'example.com', 443, False)
self.assertEqual(client.build_full_url('/etc'), 'http://example.com:443/v1/etc')
client = Client('key', 'secret', 'example.com', 443, True)
self.assertEqual(client.build_full_url('/etc'), 'https://example.com/v1/etc')
client = Client('key', 'secret', 'example.com', 88, True)
self.assertEqual(client.build_full_url('/etc'), 'https://example.com:88/v1/etc')
client = Client('key', 'secret', 'example.com', 80, True)
self.assertEqual(client.build_full_url('/etc'), 'https://example.com:80/v1/etc')
def test_get_series(self):
self.client.session.get.return_value = MockResponse(200, """[{
"id": "id",
"key": "key",
"name": "name",
"tags": ["tag1", "tag2"],
"attributes": {"key1": "value1"}
}]""")
series = self.client.get_series()
self.client.session.get.assert_called_once_with(
'https://example.com/v1/series/',
auth=('key', 'secret'),
headers=self.get_headers
)
expected = [Series('id', 'key', 'name', {'key1': 'value1'}, ['tag1', 'tag2'])]
self.assertEqual(series, expected)
def test_create_series(self):
self.client.session.post.return_value = MockResponse(200, """{
"id": "id",
"key": "my-key.tag1.1",
"name": "",
"tags": ["my-key", "tag1"],
"attributes": {}
}""")
series = self.client.create_series("my-key.tag1.1")
self.client.session.post.assert_called_once_with(
'https://example.com/v1/series/',
data="""{"key": "my-key.tag1.1"}""",
auth=('key', 'secret'),
headers=self.post_headers
)
expected = Series('id', 'my-key.tag1.1', '', {}, ['my-key', 'tag1'])
self.assertEqual(series, expected)
def test_create_series_validity_error(self):
with self.assertRaises(ValueError):
series = self.client.create_series('key.b%^.test')
def test_update_series(self):
update = Series('id', 'key', 'name', {'key1': 'value1'}, ['tag1'])
self.client.session.put.return_value = MockResponse(200, simplejson.dumps(update.to_json()))
updated = self.client.update_series(update)
self.client.session.put.assert_called_once_with(
'https://example.com/v1/series/id/id/',
auth=('key', 'secret'),
data=simplejson.dumps(update.to_json()),
headers=self.put_headers
)
self.assertEqual(update, updated)
#.........这里部分代码省略.........