Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[MIDDLEWARE] middleware executed many times

Đang mở
#53 17 bình luận 3 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
flask, graphql, python
Lĩnh vực
api, backend

Hướng nghiên cứu

Bắt đầu từ cấu hình GraphQLView.as_view và DummyMiddleware.resolve được nêu trong issue, sau đó tái hiện hành vi với truy vấn hello, một truy vấn danh sách và mutation logout. So sánh số lần middleware được gọi và xác định hành vi dự kiến là chỉ thực thi một lần trước khi xác định thành phần nào chịu trách nhiệm.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
Python
Star
1.3k
Fork
139
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của graphql-python/flask-graphql

Tất cả issue của graphql-python/flask-graphql

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.