我正在利用InfluxDB库的SeriesHelper对象(请查看https://influxdb-python.readthedocs.io/en/latest/examples.html#tutorials-serieshelper)将一组数据点推送到InfluxDB。必须继承SeriesHelper类,并且子类需要初始化各种对象作为其元属性,以便覆盖父类中对象的默认值。你知道吗
Actual code
class MySeriesHelper(SeriesHelper):
"""Instantiate SeriesHelper to write points to the backend."""
class Meta:
"""Meta class stores time series helper configuration."""
client = myclient
series_name = 'rf_results'
fields = ['some_stat', 'other_stat']
tags = ['server_name']
bulk_size = 5
autocommit = True
在这里,'series\u name'对象在作为脚本运行之前被初始化(硬编码)。我的用例是基于传递给这个脚本的运行时参数初始化'series\u name'。 我试图定义一个全局变量,其值在运行时提供,并将该全局变量赋给下面的“series\u name”,但没有成功。你知道吗
Problematic code
series_configured = None
class MySeriesHelper(SeriesHelper):
"""Instantiate SeriesHelper to write points to the backend."""
class Meta:
"""Meta class stores time series helper configuration."""
client = myclient
series_name = series_configured
fields = ['some_stat', 'other_stat']
tags = ['server_name']
bulk_size = 5
autocommit = True
def main():
global series_configured
series_configured = args.series_name
MySeriesHelper(server_name='server_A', some_stat='Master server', other_stat='Controller')
MySeriesHelper.commit()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--series_name", dest='series_name',
help="The measurement to be used for storing the data points",required=True)
args = parser.parse_args()
main()
运行时出现的错误是
'NoneType' object has no attribute 'format'
它推断对象'series\u name'没有用值初始化。有没有办法正确初始化它?你知道吗
当python interpreter遍历代码(逐行)时,它定义了所有的类静态变量。 它是在从类创建实例之前设置的静态变量。 也就是说,当你达到以下程度时:
series_name
的值已经设置为None
(因为这是series_configured
的值)。你知道吗下面的示例显示在创建实例之前已经设置了静态变量:
如果要更改
Meta.series_configured
静态变量,则必须在series_configured
更改其内容之后设置它。你知道吗尝试以下主要方法。你知道吗
相关问题 更多 >
编程相关推荐