In [1]:
from aioinflux.serialization import serialize
from aioinflux.serialization.datapoint import datapoint, InfluxType

In [2]:
@datapoint
class Trade:
    timestamp: InfluxType.TIMEINT
    instrument: InfluxType.TAG
    source: InfluxType.TAG
    side: InfluxType.TAG
    price: InfluxType.FLOAT
    size: InfluxType.INT
    trade_id: InfluxType.STR

In [3]:
trade = Trade(
    timestamp=1540184368785116000,
    instrument='AAPL',
    source='NASDAQ',
    side='BUY',
    price=219.23,
    size=100,
    trade_id='34a1e085-3122-429c-9662-7ce82039d287'
)

In [4]:
trade_dict = {
    'time': 1540184368785116000,
    'measurement': 'Trade',
    'tags': {'instrument': 'AAPL', 'source': 'NASDAQ', 'side': 'BUY'},
    'fields': {'price': 219.23, 'size': 100,
               'trade_id': '34a1e085-3122-429c-9662-7ce82039d287'}
}

In [5]:
trade.to_lineprotocol()


Out[5]:
b'Trade,instrument=AAPL,source=NASDAQ,side=BUY size=100i,price=219.23,trade_id="34a1e085-3122-429c-9662-7ce82039d287" 1540184368785116000'

In [6]:
serialize(trade_dict)


Out[6]:
b'Trade,instrument=AAPL,source=NASDAQ,side=BUY price=219.23,size=100i,trade_id="34a1e085-3122-429c-9662-7ce82039d287" 1540184368785116000'

In [7]:
%timeit trade.to_lineprotocol()


3.35 µs ± 53.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [8]:
%timeit serialize(trade_dict)


10.7 µs ± 100 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)