并行运行flask graphql和gevent socketio

时间:2020-04-22 10:16:36

标签: python flask

我正在尝试并行安装石墨烯(localhost:80)和Websocket服务器,以便它可以在ws:// localhost:5000上提供graphql订阅。

但是,只要达到server.serve_forever(),flask / graphql http端点就会停止响应,只有websocket可以工作。

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

0 个答案:

没有答案
相关问题