Sessions

In the examples listed in Writing Measurements, every call to write will issue a direct call to the InfluxDB API. There might be situations where you’d want to accumulate measurements and write them all at once. That’s what sessions are for:

from inflow import Client

client = Client('http://username:pass@localhost:8086/databasename')
session = client.session()

session.write('temperature', value=23.1, timestamp=1475848864)
session.write('temperature', value=25.0, timestamp=1475849823)

session.commit()

In the above example, a session is created in which we issue our write calls. After doing some write calls, we call commit on the session. This will issue the write to the InfluxDB API. If commit isn’t called on the sessions, the data given in the write‘s will be lost.

Note

The session’s write method works exactly the same as that of the normal client.

Warning

Don’t try to call query on a session, as Sessions are only meant to do writes. If you want to do queries, just use the Client.

As a Context Manager

You can also use the session as a context manager:

from inflow import Client

client = Client('http://username:pass@localhost:8086/databasename')

with client.session() as session:
    session.write('temperature', value=23.1, timestamp=1475848864)
    session.write('temperature', value=25.0, timestamp=1475849823)

When the context manager exits, the session is automatically committed.

Autocommitting

You can also have the session autocommit after a certain amount of write calls, using autocommit_every:

from inflow import Client

client = Client('http://username:pass@localhost:8086/databasename')
session = client.session(autocommit_every=5)

session.write('temperature', value=23.1, timestamp=1475848864)
session.write('temperature', value=25.0, timestamp=1475849823)
session.write('temperature', value=22.9, timestamp=1475849825)
session.write('temperature', value=28.2, timestamp=1475849912)

# This next write call will trigger the autocommit.
session.write('temperature', value=25.1, timestamp=1475849999)

Retention Policies

You can also specify the retention policy for the entire session:

from inflow import Client

client = Client('http://username:pass@localhost:8086/databasename')

with client.session(retention_policy='rp_four_weeks') as session:
    session.write('temperature', value=23.1, timestamp=1475848864)

Note

Unlike the Client.write method, you cannot specify the retention policy on the Session.write. Retention policies are Session-wide.