def start_span(self, request, headers, peer_host, peer_port):
        """
        Start a new server-side span. If the span has already been started
        by `start_basic_span`, this method only adds baggage from the headers.

        :param request: inbound tchannel.tornado.request.Request
        :param headers: dictionary containing parsed application headers
        :return:
        """
        parent_context = None
        # noinspection PyBroadException
        try:
            if headers and hasattr(headers, 'iteritems'):
                tracing_headers = {
                    k[len(TRACING_KEY_PREFIX):]: v
                    for k, v in headers.iteritems()
                    if k.startswith(TRACING_KEY_PREFIX)
                }
                parent_context = self.tracer.extract(
                    format=opentracing.Format.TEXT_MAP,
                    carrier=tracing_headers
                )
                if self.span and parent_context:
                    # we already started a span from Tracing fields,
                    # so only copy baggage from the headers.
                    for k, v in parent_context.baggage.iteritems():
                        self.span.set_baggage_item(k, v)
        except:
            log.exception('Cannot extract tracing span from headers')
        if self.span is None:
            self.span = self.tracer.start_span(
                operation_name=request.endpoint,
                child_of=parent_context,
                tags={tags.SPAN_KIND: tags.SPAN_KIND_RPC_SERVER},
            )
        if 'cn' in request.headers:
            self.span.set_tag(tags.PEER_SERVICE, request.headers['cn'])
        if peer_host:
            self.span.set_tag(tags.PEER_HOST_IPV4, peer_host)
        if peer_port:
            self.span.set_tag(tags.PEER_PORT, peer_port)
        if 'as' in request.headers:
            self.span.set_tag('as', request.headers['as'])
        return self.span
Start a new server-side span. If the span has already been started
        by `start_basic_span`, this method only adds baggage from the headers.

        :param request: inbound tchannel.tornado.request.Request
        :param headers: dictionary containing parsed application headers
        :return: