1*1626Smax.romanov@nginx.comimport asyncio 2*1626Smax.romanov@nginx.comimport sys 3*1626Smax.romanov@nginx.comimport time 4*1626Smax.romanov@nginx.comimport threading 5*1626Smax.romanov@nginx.com 6*1626Smax.romanov@nginx.com 7*1626Smax.romanov@nginx.comclass Foo(threading.Thread): 8*1626Smax.romanov@nginx.com num = 10 9*1626Smax.romanov@nginx.com 10*1626Smax.romanov@nginx.com def __init__(self, x): 11*1626Smax.romanov@nginx.com self.__x = x 12*1626Smax.romanov@nginx.com threading.Thread.__init__(self) 13*1626Smax.romanov@nginx.com 14*1626Smax.romanov@nginx.com def log_index(self, index): 15*1626Smax.romanov@nginx.com sys.stderr.write( 16*1626Smax.romanov@nginx.com "(" + str(index) + ") Thread: " + str(self.__x) + "\n" 17*1626Smax.romanov@nginx.com ) 18*1626Smax.romanov@nginx.com sys.stderr.flush() 19*1626Smax.romanov@nginx.com 20*1626Smax.romanov@nginx.com def run(self): 21*1626Smax.romanov@nginx.com i = 0 22*1626Smax.romanov@nginx.com for _ in range(3): 23*1626Smax.romanov@nginx.com self.log_index(i) 24*1626Smax.romanov@nginx.com i += 1 25*1626Smax.romanov@nginx.com time.sleep(1) 26*1626Smax.romanov@nginx.com self.log_index(i) 27*1626Smax.romanov@nginx.com i += 1 28*1626Smax.romanov@nginx.com 29*1626Smax.romanov@nginx.com 30*1626Smax.romanov@nginx.comasync def application(scope, receive, send): 31*1626Smax.romanov@nginx.com assert scope['type'] == 'http' 32*1626Smax.romanov@nginx.com 33*1626Smax.romanov@nginx.com Foo(Foo.num).start() 34*1626Smax.romanov@nginx.com Foo.num += 10 35*1626Smax.romanov@nginx.com 36*1626Smax.romanov@nginx.com await send({ 37*1626Smax.romanov@nginx.com 'type': 'http.response.start', 38*1626Smax.romanov@nginx.com 'status': 200, 39*1626Smax.romanov@nginx.com 'headers': [ 40*1626Smax.romanov@nginx.com (b'content-length', b'0'), 41*1626Smax.romanov@nginx.com ] 42*1626Smax.romanov@nginx.com }) 43