WSGI application
Ariadne provides a GraphQL
class that implements a production-ready WSGI application.
Ariadne also provides GraphQLMiddleware
that allows you to route between a GraphQL
instance and another WSGI app based on the request path.
Using with a WSGI server
First create an application instance pointing it to the schema to serve:
# in mywsgi.py
import os
from ariadne import make_executable_schema
from ariadne.wsgi import GraphQL
from mygraphql import type_defs, resolvers
schema = make_executable_schema(type_defs, resolvers)
application = GraphQL(schema)
Then point a WSGI server such as uWSGI or Gunicorn at the above instance.
Example using Gunicorn:
$ gunicorn mywsgi:application
Example using uWSGI:
$ uwsgi --http :8000 --wsgi-file mywsgi
Configuration options
GraphQL
takes the same options that graphql
does.
explorer
GraphQL Explorer to use by this server.
See explorers documentation for more details.
Using the middleware
To add GraphQL API to your project using GraphQLMiddleware
, instantiate it with your existing WSGI application as a first argument and your schema as the second:
# in wsgi.py
import os
from django.core.wsgi import get_wsgi_application
from ariadne import make_executable_schema
from ariadne.wsgi import GraphQL, GraphQLMiddleware
from mygraphql import type_defs, resolvers
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mydjangoproject.settings")
schema = make_executable_schema(type_defs, resolvers)
django_application = get_wsgi_application()
graphql_application = GraphQL(schema)
application = GraphQLMiddleware(django_application, graphql_application)
Now direct your WSGI server to wsgi.application
. The GraphQL API is available on /graphql/
by default but this can be customized by passing a different path as the third argument:
# GraphQL will now be available on "/graphql-v2/" path
application = GraphQLMiddleware(django_application, graphql_application, "/graphql-v2/")