def _submit_part(session, url, part, timeout):
    """
    Used by the worker to submit the part data to the storage service URL.
    :param session: Storage service session.
    :param url: Part url.
    :param part: Part data in bytes.
    :param timeout: Timeout for storage session.
    :return: ETag for the submitted part.
    """
    try:
        response = session.put(url, data=part, timeout=timeout)
        return response.headers.get('etag').strip('"')
    except Exception as e:
        raise SbgError(
            'Failed to submit the part. Reason: {}'.format(
                six.text_type(e)
            )
        )