xref: /unit/test/python/threads/asgi.py (revision 1971:3410f9d2a662)
1*1971Szelenkov@nginx.comimport threading
21683Smax.romanov@nginx.comimport time
31683Smax.romanov@nginx.com
41848Szelenkov@nginx.com
51683Smax.romanov@nginx.comasync def application(scope, receive, send):
61683Smax.romanov@nginx.com    assert scope['type'] == 'http'
71683Smax.romanov@nginx.com
81683Smax.romanov@nginx.com    headers = scope.get('headers', [])
91683Smax.romanov@nginx.com
101683Smax.romanov@nginx.com    def get_header(n, v=None):
111683Smax.romanov@nginx.com        for h in headers:
121683Smax.romanov@nginx.com            if h[0] == n:
131683Smax.romanov@nginx.com                return h[1]
141683Smax.romanov@nginx.com        return v
151683Smax.romanov@nginx.com
161683Smax.romanov@nginx.com    delay = float(get_header(b'x-delay', 0))
171683Smax.romanov@nginx.com
181683Smax.romanov@nginx.com    time.sleep(delay)
191683Smax.romanov@nginx.com
201848Szelenkov@nginx.com    await send(
211848Szelenkov@nginx.com        {
221848Szelenkov@nginx.com            'type': 'http.response.start',
231848Szelenkov@nginx.com            'status': 200,
241848Szelenkov@nginx.com            'headers': [
251848Szelenkov@nginx.com                (b'content-length', b'0'),
261848Szelenkov@nginx.com                (b'x-thread', str(threading.currentThread().ident).encode()),
271848Szelenkov@nginx.com            ],
281848Szelenkov@nginx.com        }
291848Szelenkov@nginx.com    )
30