当前位置: 首页>>代码示例>>Python>>正文


Python Client.get_series方法代码示例

本文整理汇总了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
开发者ID:msund,项目名称:HomeCoolingPi,代码行数:52,代码来源:PostTemperature.py

示例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)
开发者ID:eman,项目名称:tempodb-archive,代码行数:69,代码来源:tempodb_archive.py

示例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)

#.........这里部分代码省略.........
开发者ID:InPermutation,项目名称:tempodb-python,代码行数:103,代码来源:tests.py


注:本文中的tempodb.Client.get_series方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。