Skip to main content
Version: 0.14.0

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.

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/")