[MIDDLEWARE] middleware executed many times
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 25/100
Piste de recherche
Commencez par la configuration de GraphQLView.as_view et DummyMiddleware.resolve présentée dans l’issue, puis reproduisez le comportement avec la requête hello, une requête de liste et la mutation logout. Comparez le nombre d’invocations du middleware et déterminez le comportement attendu avec une seule exécution avant d’identifier le composant responsable.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Hi there, I'm using flask-graphql in a project and got into a question/issue I don't have many clues. I'm using middlewares; this is the minimum example:
from flask import Flask, request
from flask_graphql import GraphQLView
from graphene import Field, ObjectType, Schema, String, relay
class Hello(ObjectType):
message = String()
class Query(ObjectType):
hello = Field(Hello)
def resolve_hello(self, info):
return Hello(message="Hi there")
class DummyMiddleware(object):
def resolve(self, next, root, info, **kwargs):
print("DummyMiddleware")
return next(root, info, **kwargs)
dummy_middleware = DummyMiddleware()
schema = Schema(query=Query)
app = Flask(__name__)
app.add_url_rule('/graphql', view_func=GraphQLView.as_view('graphql',
schema=schema,
graphiql=True,
middleware=[dummy_middleware]))
if __name__ == "__main__":
app.run(host='0.0.0.0', threaded=True)
(The problem happens no matter the version; the problem also happens when launching the wsgi app with gunicorn).
If I query "hello()", the "DummyMiddleware" will appear twice. If I query a list of elements, the middleware is executed lots of time, twice per element it seems.
For a query this is just a problem of performance, but in a Logout() mutation what happens is:
- 1st time - the authenticated request is valid, so "logout()" deletes the token
- 2nd time - the authenticated request is not valid (because the token has been deleted), so it returns an error
Is there anything wrong in my approach to middlewares? I'm not sure which part is responsible (flask, graphql, my configuration...). Any hint would be appreciated.
- Langage dominant
- Python
- Étoiles
- 1.3k
- Forks
- 138
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de graphql-python/flask-graphql
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
graphql-python/flask-graphql#92 · 2 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
-
which graphiql version is using?Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
graphql-python/flask-graphql#85 · 2 commentaires · 1 réaction ·
-
CSRF Exemption?Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 25/100
graphql-python/flask-graphql#84 · 1 commentaire ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
graphql-python/flask-graphql#80 · 9 commentaires · 2 réactions ·
Toutes les issues de graphql-python/flask-graphql
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
awslabs/visual-asset-management-system#414 ·
Les mainteneurs répondent en général sous 1 jour
-
bug v1 v2
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
modelcontextprotocol/python-sdk#3670 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
aicell-lab/bioengine#232 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
modelscope/evalscope#1836 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100