'Add subscription to tickerhandler
Args:
interval (int, optional): Interval in seconds between calling
`callable(*args, **kwargs)`
callable (callable function or method, optional): This
should either be a stand-alone function or a method on a
typeclassed entity (that is, one that can be saved to the
database).
idstring (str, optional): Identifier for separating
this ticker-subscription from others with the same
interval. Allows for managing multiple calls with
the same time interval and callback.
persistent (bool, optional): A ticker will always survive
a server reload. If this is unset, the ticker will be
deleted by a server shutdown.
args, kwargs (optional): These will be passed into the
callback every time it is called. This must be data possible
to pickle!
Notes:
The callback will be identified by type and stored either as
as combination of serialized database object + methodname or
as a python-path to the module + funcname. These strings will
be combined iwth `interval` and `idstring` to define a
unique storage key for saving. These must thus all be supplied
when wanting to modify/remove the ticker later.'

def add(self, interval=60, callback=None, idstring='', persistent=True, *args, **kwargs):

    if isinstance(callback, int):
        raise RuntimeError('TICKER_HANDLER.add    has    changed:    the    interval    is    now    the    first    argument,    callback    the    second.')
    (obj, path, callfunc) = self._get_callback(callback)
    store_key = self._store_key(obj, path, interval, callfunc, idstring, persistent)
    kwargs['_obj'] = obj
    kwargs['_callback'] = callfunc
    self.ticker_storage[store_key] = (args, kwargs)
    self.ticker_pool.add(store_key, *args, **kwargs)
    self.save()
