2016-01-13 8 views
5

मैं एओएनएचटीपी और देशी पायथन 3.5 कोरआउट जैसे एसिन्सीओ पुस्तकालयों के साथ टर्ननाडो का उपयोग करना चाहता हूं, और ऐसा लगता है कि यह नवीनतम टर्ननाडो रिलीज (4.3) में समर्थित है। हालांकि, टर्ननाडो इवेंट लूप में इसका उपयोग करते समय, अनुरोध हैंडलर अनिश्चित काल तक लटकता है। Aiohttp का उपयोग नहीं करते (यानी r = await aiohttp.get('http://google.com/') और text = await r.text() नीचे दिए गए लाइनों के बिना), अनुरोध हैंडलर सामान्य के रूप में आता है।aiohttp (या अन्य asyncio- आधारित पुस्तकालयों) के साथ टर्ननाडो का उपयोग

from tornado.ioloop import IOLoop 
import tornado.web 
import tornado.httpserver 
import aiohttp 

IOLoop.configure('tornado.platform.asyncio.AsyncIOLoop') 


class MainHandler(tornado.web.RequestHandler): 
    async def get(self): 
     r = await aiohttp.get('http://google.com/') 
     text = await r.text() 
     self.write("Hello, world, text is: {}".format(text)) 

if __name__ == "__main__": 
    app = tornado.web.Application([ 
     (r"/", MainHandler), 
    ]) 
    server = tornado.httpserver.HTTPServer(app) 
    server.bind(8888, '127.0.0.1') 
    server.start() 
    IOLoop.current().start() 

उत्तर

10

docs के अनुसार, आप यह लगभग सही कर रहे हैं:

मेरे परीक्षण कोड इस प्रकार है। आपको टॉरनाडो के इलियोप को इसी एसिन्सियो के साथ बनाना/इनिट करना है, क्योंकि एआईओटीपी एसिन्सीओ पर चल रहा है।

from tornado.ioloop import IOLoop 
import tornado.web 
import tornado.httpserver 
import aiohttp 
from tornado.platform.asyncio import AsyncIOMainLoop 
import asyncio 

class MainHandler(tornado.web.RequestHandler): 
    async def get(self): 
     r = await aiohttp.get('http://google.com/') 
     text = await r.text() 
     self.write("Hello, world, text is: {}".format(text)) 

if __name__ == "__main__": 
    AsyncIOMainLoop().install() 
    app = tornado.web.Application([ 
     (r"/", MainHandler), 
    ]) 
    server = tornado.httpserver.HTTPServer(app) 
    server.bind(1234, '127.0.0.1') 
    server.start() 
    asyncio.get_event_loop().run_forever().start() 

कारण है कि अपने कोड अटक जाते हैं, कि asyncio के ioloop वास्तव में नहीं चल रहा है, केवल तूफान के एक है, इसलिए await अनिश्चित काल के लिए इंतज़ार कर रहा है है।

संबंधित मुद्दे