---
title: "How to deploy with ASGI"
version: 3.2
locale: ja
source: https://docs.djangoproject.com/ja/3.2/howto/deployment/asgi/
canonical: https://djangodocs.dev/ja/3.2/howto/deployment/asgi/
---
# How to deploy with ASGI

As well as WSGI, Django also supports deploying on [ASGI](https://asgi.readthedocs.io/en/latest/), the emerging Python
standard for asynchronous web servers and applications.

Django's [`startproject`](/ja/3.2/ref/django-admin/#django-admin-startproject) management command sets up a default ASGI
configuration for you, which you can tweak as needed for your project, and
direct any ASGI-compliant application server to use.

Django includes getting-started documentation for the following ASGI servers:

- [How to use Django with Daphne](/ja/3.2/howto/deployment/asgi/daphne/)
- [How to use Django with Hypercorn](/ja/3.2/howto/deployment/asgi/hypercorn/)
- [How to use Django with Uvicorn](/ja/3.2/howto/deployment/asgi/uvicorn/)

## `application` オブジェクト

Like WSGI, ASGI has you supply an `application` callable which
the application server uses to communicate with your code. It's commonly
provided as an object named `application` in a Python module accessible to
the server.

The [`startproject`](/ja/3.2/ref/django-admin/#django-admin-startproject) command creates a file
`<project_name>/asgi.py` that contains such an `application` callable.

It's not used by the development server (`runserver`), but can be used by
any ASGI server either in development or in production.

ASGI servers usually take the path to the application callable as a string;
for most Django projects, this will look like `myproject.asgi:application`.

> **Warning**
>
> While Django's default ASGI handler will run all your code in a synchronous
> thread, if you choose to run your own async handler you must be aware of
> async-safety.
>
> Do not call blocking synchronous functions or libraries in any async code.
> Django prevents you from doing this with the parts of Django that are not
> async-safe, but the same may not be true of third-party apps or Python
> libraries.

## Settings モジュールを設定する

When the ASGI server loads your application, Django needs to import the
settings module — that's where your entire application is defined.

Django は適切な Settings モジュールを見つけるために、 [`DJANGO_SETTINGS_MODULE`](/ja/3.2/topics/settings/#envvar-DJANGO_SETTINGS_MODULE) 環境変数を使用します。これは設定モジュールへのドット区切りのパスを含んでいなければなりません。開発時と実運用時で別々の値を使用することも可能です。どのように設定を組織するか次第です。

If this variable isn't set, the default `asgi.py` sets it to
`mysite.settings`, where `mysite` is the name of your project.

## Applying ASGI middleware

To apply ASGI middleware, or to embed Django in another ASGI application, you
can wrap Django's `application` object in the `asgi.py` file. For example:

```
from some_asgi_library import AmazingMiddleware
application = AmazingMiddleware(application)
```
