0
@ return_futureを使用して次のコードを非同期にしようとしています。アプリケーションにブロック機能が必要なため、time.sleep()があります。 しかし私はそれをasync.asにするために何をコールバックするのか分からない。私はTORNADOの初心者だ。コールバック竜巻
次のコードには、2つのhtmlファイル「register.html」とwelcome.htmlがあります。すべてのヘルプは非同期
import time
import json
import tornado.web
import tornado.ioloop
from tornado import gen
from tornado.concurrent import return_future
from BaseHTTPServer import BaseHTTPRequestHandler
execfile("jdict.py")
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("welcome.html")
class LoginHandler(MainHandler):
def get(self):
self.render("register.html")
@return_future
def post(self,callback=None):
dict={}
wmap_dict=import_dict('user_data')
dict["uname"]=self.get_argument("uname")
dict["uid"]=self.get_argument("uid")
u_key=dict["uid"] +':' +self.get_argument("uname")
jline={}
jline[u_key]=dict
print (jline)
with open("user_data",'a')as f:
f.write(json.dumps(jline))
f.write("\n")
time.sleep(5)
callback()
self.redirect("/")
application = tornado.web.Application([
(r"/", MainHandler),
(r"/login", LoginHandler),
], cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__")
application.listen(5500)
tornado.ioloop.IOLoop.current().start()
`