daphne/channels/interfaces/wsgi.py
2015-06-10 20:39:36 -07:00

22 lines
801 B
Python

import django
from django.core.handlers.wsgi import WSGIHandler
from django.http import HttpResponse
from channels import Channel
class WSGIInterface(WSGIHandler):
"""
WSGI application that pushes requests to channels.
"""
def __init__(self, channel_backend, *args, **kwargs):
self.channel_backend = channel_backend
django.setup()
super(WSGIInterface, self).__init__(*args, **kwargs)
def get_response(self, request):
request.response_channel = Channel.new_name("django.wsgi.response")
Channel("django.wsgi.request", channel_backend=self.channel_backend).send(**request.channel_encode())
channel, message = self.channel_backend.receive_many_blocking([request.response_channel])
return HttpResponse.channel_decode(message)