Используйте запрос сокетов Flask /ws вне контекста

Я хотел бы иметь возможность использовать запрос Flask вне контекста.

Я так понимаю, так как Flask 0.10 есть декоратор (@copy_current_request_context), чтобы сделать это, и вот как я использую этот декоратор, чтобы попытаться изменить флеш-сокет. В частности, @socket.route декоратор, входящий в состав колб:

def route(self, rule, request, **options):

    def decorator(f):
        endpoint = options.pop('endpoint', None)
        @copy_current_request_context
        def do_some_work():
            env = request.environ['wsgi.websocket']
            self.add_url_rule(rule, endpoint, f,env, **options)
        gevent.spawn(do_some_work)
        return f
    return decorator

Хотя эта ошибка имеет смысл для меня - я предполагаю, что есть способ сделать то, что я хочу.

RuntimeError: This decorator can only be used at local scopes when a   
request context is on the stack.  For instance within view functions.

Я попытался передать запрос в декоратор, но это не сработало.

Чтобы дать немного больше контекста, я пытаюсь добавить request.environ['wsgi.websocket'] чтобы продиктовать внутри объекта Sockets, чтобы иметь возможность доступа к ws переменная (которую я понимаю как среду запроса).

На более высоком уровне, я хотел бы умение делать ws.send() откуда-то, кроме @route функция или представление - возможно, другой поток, который имеет доступ к экземпляру объекта сокета.

Я сделал нечто подобное с Socket-IO - где socketio объект - это все, что вам нужно для send() а также recieve() данные - однако с Sockets кажется, что вам нужен объект ws, который является request.environ['wsgi.websocket']

0 ответов

Другие вопросы по тегам