def activate(self, span, finish_on_close):
        """
        Make a :class:`~opentracing.Span` instance active.

        :param span: the :class:`~opentracing.Span` that should become active.
        :param finish_on_close: whether *span* should automatically be
            finished when :meth:`Scope.close()` is called.

        If no :class:`Task` is being executed, thread-local
        storage will be used to store the :class:`~opentracing.Scope`.

        :return: a :class:`~opentracing.Scope` instance to control the end
            of the active period for the :class:`~opentracing.Span`.
            It is a programming error to neglect to call :meth:`Scope.close()`
            on the returned instance.
        """

        task = self._get_task()
        if not task:
            return super(AsyncioScopeManager, self).activate(span,
                                                             finish_on_close)

        scope = _AsyncioScope(self, span, finish_on_close)
        self._set_task_scope(scope, task)

        return scope