मैंने कुछ समय पहले टोरनाडो फ्रेमवर्क सीखना शुरू कर दिया है। मुझे अनुभवहीन उपयोगकर्ताओं के लिए प्रलेखन की कमी का सामना करना पड़ा है और एसिन्सीओ मॉड्यूल दस्तावेज़ भी चेक किया गया है। तो समस्या यह है, कि मैं asyncio में कुछ सरल कोड है:टोरनेडो ढांचे। TypeError: 'भविष्य' ऑब्जेक्ट कॉल करने योग्य नहीं है
import asyncio
@asyncio.coroutine
def compute(x, y):
print("Compute %s + %s ..." % (x, y))
yield from asyncio.sleep(1.0)
return x + y
@asyncio.coroutine
def print_sum(x, y):
result = yield from compute(x, y)
print("%s + %s = %s" % (x, y, result))
loop = asyncio.get_event_loop()
loop.run_until_complete(print_sum(1, 2))
loop.close()
और फिर मैं एक ही का उपयोग कर तूफान ढांचा बनाने के लिए कोशिश की है:
from tornado.ioloop import IOLoop
from tornado import gen
@gen.coroutine
def compute(x, y):
print("Compute %s + %s ..." % (x, y))
yield gen.sleep(1.0)
return (x+y)
@gen.coroutine
def print_sum(x, y):
result = yield compute(x, y)
print("%s + %s = %s" % (x, y, result))
IOLoop.instance().run_sync(print_sum(1,2))
लेकिन दुर्भाग्य से तूफान कोड इस तरह के एक बढ़ा अपवाद:
Compute 1 + 2 ...
Traceback (most recent call last):
File "tornado_coroutine.py", line 19, in <module>
IOLoop.instance().run_sync(print_sum(1, 2))
File "C:\Python34\lib\site-packages\tornado\ioloop.py", line 421, in run_sync
return future_cell[0].result()
File "C:\Python34\lib\site-packages\tornado\concurrent.py", line 209, in resul
t
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
File "C:\Python34\lib\site-packages\tornado\ioloop.py", line 402, in run
result = func()
TypeError: 'Future' object is not callable
शायद IOLoop एक नया "गोद" बनाने के लिए के बाद सभी coroutines उनके मूल्यों वापस आ गए की कोशिश करता है?
का उपयोग कर एक अज्ञात फ़ंक्शन बना सकते हैं धन्यवाद क्लाउस! – Anton