summaryrefslogtreecommitdiffhomepage
path: root/test/python/threads/asgi.py
blob: d51ae4311649e84c85cda282a5b89ccb87761fd5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import asyncio
import time
import threading

async def application(scope, receive, send):
    assert scope['type'] == 'http'

    headers = scope.get('headers', [])

    def get_header(n, v=None):
        for h in headers:
            if h[0] == n:
                return h[1]
        return v

    delay = float(get_header(b'x-delay', 0))

    time.sleep(delay)

    await send({
        'type': 'http.response.start',
        'status': 200,
        'headers': [
            (b'content-length', b'0'),
            (b'x-thread', str(threading.currentThread().ident).encode()),
        ]
    })