When running my tornado script which should send a request and get the body of the response and append this to some html code on a localhost port. However, I get this error:
TypeError: init() got an unexpected keyword argument 'callback'
It turns out from the documentation Asynchronous HTTP client that the callback has been removed for Future
Changed in version 6.0: The callback argument was removed. Use the returned Future instead.
There are a lack of effective examples and so what is the most appropriate method to use Future in replacement for callback in my script?
import asyncio
import os
import json
import tornado.httpclient
import tornado.web
import tornado.httpserver
import tornado.gen
from tornado.options import define, options
define('port', default = 9060, help="run port 9060", type=int)
class requestFour(tornado.web.RequestHandler):
@tornado.gen.coroutine
def get(self):
#arg = self.get_argument('stock')
client = tornado.httpclient.AsyncHTTPClient()
yield client.fetch('https://books.toscrape.com', callback=self.on_response)
def on_response(self, response):
body = json.load(response.body)
self.write("""
<div style="text-align: center">
<div style="font-size: 72px">%s</div>
<div style="font-size: 144px">%.02f</div>
<div style="font-size: 24px">tweets per second</div>
</div>
""" % (body))
self.finish()
def my_app():
app = tornado.web.Application(handlers = [(r'/', requestFour)])
http_server = tornado.httpserver.HTTPServer(app)
return http_server
async def main():
app = my_app()
app.listen(options.port)
shutdown_event = asyncio.Event()
await shutdown_event.wait()
if __name__ == '__main__':
asyncio.run(main())