'Sends or saves an async update.
:param op: operation performed (ex: \'PUT\', or \'DELETE\')
:param account: account name for the object
:param container: container name for the object
:param obj: object name
:param host: host that the container is on
:param partition: partition that the container is on
:param contdevice: device name that the container is on
:param headers_out: dictionary of headers to send in the container
request
:param objdevice: device name that the object is in
:param policy: the associated BaseStoragePolicy instance
:param logger_thread_locals: The thread local values to be set on the
self.logger to retain transaction
logging information.'

def async_update(self, op, account, container, obj, host, partition, contdevice, headers_out, objdevice, policy, logger_thread_locals=None):

    if logger_thread_locals:
        self.logger.thread_locals = logger_thread_locals
    headers_out['user-agent'] = ('object-server    %s' % os.getpid())
    full_path = ('/%s/%s/%s' % (account, container, obj))
    if all([host, partition, contdevice]):
        try:
            with ConnectionTimeout(self.conn_timeout):
                (ip, port) = host.rsplit(':', 1)
                conn = http_connect(ip, port, contdevice, partition, op, full_path, headers_out)
            with Timeout(self.node_timeout):
                response = conn.getresponse()
                response.read()
                if is_success(response.status):
                    return
                else:
                    self.logger.error(_('ERROR    Container    update    failed    (saving    for    async    update    later):    %(status)d    response    from    %(ip)s:%(port)s/%(dev)s'), {'status': response.status, 'ip': ip, 'port': port, 'dev': contdevice})
        except (Exception, Timeout):
            self.logger.exception(_('ERROR    container    update    failed    with    %(ip)s:%(port)s/%(dev)s    (saving    for    async    update    later)'), {'ip': ip, 'port': port, 'dev': contdevice})
    data = {'op': op, 'account': account, 'container': container, 'obj': obj, 'headers': headers_out}
    timestamp = headers_out.get('x-meta-timestamp', headers_out.get('x-timestamp'))
    self._diskfile_router[policy].pickle_async_update(objdevice, account, container, obj, data, timestamp, policy)
