Tornado Web Server framework for writing simple Python servers
- 2020-11-20 06:09:52
- OfStack
We all know that in Web development, servers are required, such as Tomcat, WebLogic, WebSphere developed by Java Web. Now let's see how to use Tornado Web Server framework to write a simple Python server.
Generally, you only need to implement the get and post methods. As explained by the example of using redis database above, the database insert code is as follows:
import redis
import datetime
class Database:
def __init__(self):
self.host = 'localhost'
self.port = 6379
self.write_pool = {}
def add_write(self,website,city,year,month,day,deal_number):
key = '_'.join([website,city,str(year),str(month),str(day)])
val = deal_number
self.write_pool[key] = val
def batch_write(self):
try:
r = redis.StrictRedis(host=self.host,port=self.port)
r.mset(self.write_pool)
except Exception, exception:
print exception
def add_data():
beg = datetime.datetime.now()
db = Database()
for i in range(1,10000):
db.add_write('meituan','beijing',2013,i,1,i)
db.batch_write()
end = datetime.datetime.now()
print end-beg
if __name__ == '__main__':
add_data()
The above code inserts data, so now use our server to access 1 of the data.
import json
import redis
import tornado.web
import tornado.httpserver
from tornado.options import define, options
define("port", default=8888, type=int)
class DealHandler(tornado.web.RequestHandler):
def initialize(self):
self.port = 6379
self.host = "localhost"
def get(self):
website = self.get_argument("website",None)
city = self.get_argument("city",None)
year = self.get_argument("year",None)
month = self.get_argument("month",None)
keyset = []
for i in range(1,31):
key = '_'.join([website,city,year,month,str(i)])
keyset.append(key)
r = redis.StrictRedis(host=self.host,port=self.port)
self.write( json.dumps(r.mget(keyset)) )
class ExampleHandler(tornado.web.RequestHandler):
def get(self):
who = self.get_argument("who", None)
if who:
self.write("Hello, " + who)
else:
self.write("Hello World!")
def post(self):
who = self.get_argument("who", None)
if who:
self.write("Hello, " + who)
else:
self.write("Hello World!")
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r"/", ExampleHandler),
(r"/deal", DealHandler),
]
settings = dict()
tornado.web.Application.__init__(self, handlers, settings)
def create_server():
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(Application())
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
create_server()
The above code implements a simple server for handling http requests.
Type in the browser:
http://localhost:8888/deal?website=meituan & city=beijing & year=2013 & month=9
You get the data you need.