code: def span_in_stack_context(span):
      
  
      if not isinstance(opentracing.tracer.scope_manager, TornadoScopeManager):
          raise RuntimeError('scope_manager is not TornadoScopeManager')
  
      # Enter the newly created stack context so we have
      # storage available for Span activation.
      context = tracer_stack_context()
      entered_context = _TracerEnteredStackContext(context)
  
      if span is None:
          return entered_context
  
      opentracing.tracer.scope_manager.activate(span, False)
      assert opentracing.tracer.active_span is not None
      assert opentracing.tracer.active_span is span
  
      return entered_context
docs: Create Tornado's StackContext that stores the given span in the
      thread-local request context. This function is intended for use
      in Tornado applications based on IOLoop, although will work fine
      in single-threaded apps like Flask, albeit with more overhead.
  
      ## Usage example in Tornado application
  
      Suppose you have a method `handle_request(request)` in the http server.
      Instead of calling it directly, use a wrapper:
  
      .. code-block:: python
  
          from opentracing_instrumentation import request_context
  
          @tornado.gen.coroutine
          def handle_request_wrapper(request, actual_handler, *args, **kwargs)
  
              request_wrapper = TornadoRequestWrapper(request=request)
              span = http_server.before_request(request=request_wrapper)
  
              with request_context.span_in_stack_context(span):
                  return actual_handler(*args, **kwargs)
  
      :param span:
      :return:
          Return StackContext that wraps the request context.