'Tries to create a store_key for the object.
Args:
obj (Object, tuple or None): Subscribing object if any. If a tuple, this is
a packed_obj tuple from dbserialize.
path (str or None): Python-path to callable, if any.
interval (int): Ticker interval.
callfunc (callable or str): This is either the callable function or
the name of the method to call. Note that the callable is never
stored in the key; that is uniquely identified with the python-path.
idstring (str, optional): Additional separator between
different subscription types.
persistent (bool, optional): If this ticker should survive a system
shutdown or not.
Returns:
store_key (tuple): A tuple `(packed_obj, methodname, outpath, interval,
idstring, persistent)` that uniquely identifies the
ticker. Here, `packed_obj` is the unique string representation of the
object or `None`. The `methodname` is the string name of the method on
`packed_obj` to call, or `None` if `packed_obj` is unset. `path` is
the Python-path to a non-method callable, or `None`. Finally, `interval`
`idstring` and `persistent` are integers, strings and bools respectively.'

def _store_key(self, obj, path, interval, callfunc, idstring='', persistent=True):

    interval = int(interval)
    persistent = bool(persistent)
    packed_obj = pack_dbobj(obj)
    methodname = (callfunc if (callfunc and isinstance(callfunc, basestring)) else None)
    outpath = (path if (path and isinstance(path, basestring)) else None)
    return (packed_obj, methodname, outpath, interval, idstring, persistent)
