Параллельное выполнение flask graphql и gevent socketio - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь flask с графеном (localhost: 80) и сервером веб-сокетов параллельно, чтобы он мог обслуживать подписки graphql на ws: // localhost: 5000.

Однако, как только когда он достигнет server.serve_forever(), конечная точка http фляги / graphql перестанет отвечать, и будут работать только веб-сокеты.

manage.py:

from gevent import monkey; monkey.patch_all()

from eur import models
from eur.app import create_app
from eur.graphql.graphql_queries import schema
from flask_sockets import Sockets
from graphql_ws.gevent import GeventSubscriptionServer

app = create_app()
app.app_context().push()
sockets = Sockets(app)

subscription_server = GeventSubscriptionServer(schema)
app.app_protocol = lambda environ_path_info: 'graphql-ws'

@sockets.route('/subscriptions')
def echo_socket(ws):
    subscription_server.handle(ws)
    return []

from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler
server = pywsgi.WSGIServer(eventlet.listen(('', 5000)), app, handler_class=WebSocketHandler)
server.serve_forever()

app.py:

def create_app(name=None, config_base="eur.config.BaseConfig"):
    app = Flask("eur", template_folder=constants.WEB_TEMPLATES_DIR, instance_relative_config=True)

    app.add_url_rule('/graphql',view_func=csrf.exempt(GraphQLView.as_view('graphql', schema=schema,       graphiql=True))
    return app
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...