Используйте запрос сокетов 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']