xref: /unit/test/python/threading/asgi.py (revision 1971:3410f9d2a662)
11626Smax.romanov@nginx.comimport sys
2*1971Szelenkov@nginx.comimport threading
31626Smax.romanov@nginx.comimport time
41626Smax.romanov@nginx.com
51626Smax.romanov@nginx.com
61626Smax.romanov@nginx.comclass Foo(threading.Thread):
71626Smax.romanov@nginx.com    num = 10
81626Smax.romanov@nginx.com
91626Smax.romanov@nginx.com    def __init__(self, x):
101626Smax.romanov@nginx.com        self.__x = x
111626Smax.romanov@nginx.com        threading.Thread.__init__(self)
121626Smax.romanov@nginx.com
131626Smax.romanov@nginx.com    def log_index(self, index):
141626Smax.romanov@nginx.com        sys.stderr.write(
151626Smax.romanov@nginx.com            "(" + str(index) + ") Thread: " + str(self.__x) + "\n"
161626Smax.romanov@nginx.com        )
171626Smax.romanov@nginx.com        sys.stderr.flush()
181626Smax.romanov@nginx.com
191626Smax.romanov@nginx.com    def run(self):
201626Smax.romanov@nginx.com        i = 0
211626Smax.romanov@nginx.com        for _ in range(3):
221626Smax.romanov@nginx.com            self.log_index(i)
231626Smax.romanov@nginx.com            i += 1
241626Smax.romanov@nginx.com            time.sleep(1)
251626Smax.romanov@nginx.com            self.log_index(i)
261626Smax.romanov@nginx.com            i += 1
271626Smax.romanov@nginx.com
281626Smax.romanov@nginx.com
291626Smax.romanov@nginx.comasync def application(scope, receive, send):
301626Smax.romanov@nginx.com    assert scope['type'] == 'http'
311626Smax.romanov@nginx.com
321626Smax.romanov@nginx.com    Foo(Foo.num).start()
331626Smax.romanov@nginx.com    Foo.num += 10
341626Smax.romanov@nginx.com
351848Szelenkov@nginx.com    await send(
361848Szelenkov@nginx.com        {
371848Szelenkov@nginx.com            'type': 'http.response.start',
381848Szelenkov@nginx.com            'status': 200,
391848Szelenkov@nginx.com            'headers': [(b'content-length', b'0')],
401848Szelenkov@nginx.com        }
411848Szelenkov@nginx.com    )
42