Workaround for graphql performance issue when using generic input types #836
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
At the moment there is a issue with strawberry graphql which causes performance issues in cases where the field type for a large result set uses a generic input type. There is an outline of this issue here: strawberry-graphql/strawberry#3544 and a stripped down reproduction case here https://github.com/dancoates/strawberry-generic-input-repro/blob/main/schema.py.
This PR introduces a workaround to this issue by making input types concrete before they are used in the GraphQL schema. This does introduce some code duplication, but IMO is worth it for the speed up, in my testing it has made requests 3-5x faster.