异步登录龙卷风

2023-12-13

我使用 Tornado 创建了一个适用于同步方法的登录页面。现在我想将其设为异步。那么我应该对以下代码进行哪些更改:

import tornado.ioloop
import tornado.web
import http
import time

class BaseHandler(tornado.web.RequestHandler):
    def get_current_user(self):
        return self.get_secure_cookie("user")

class MainHandler(BaseHandler):
    def get(self):
        if not self.current_user:
            self.redirect("/login")
            return
        name = tornado.escape.xhtml_escape(self.current_user)
        self.write('<html>'
    '<head> '
    '<title>WELCOME  </title>'
    '</head>'
    '<body style="background:orange;"'

    '<div align="center">'
    '<div style="margin-top:200px;margin-bottom:10px;">'
    '<span style="width:500px;color:black;font-size:30px;font-weight:bold;">WELCOME </span>'
    '</div>'
    '<div style="margin-bottom:5px;">'"Hello, " + name)

class LoginHandler(BaseHandler):
    def get(self):
        self.write('<html><body><form action="/login" method="post">'
                   '<div><span style="width:100px;;height: 500px;color:black;font-size:60;font-weight:bold;">'
                   'LOGIN'
                   '<div><span style="width:100px;;height: 500px;color:purple;font-size:30;font-weight:bold;">'
                   'NAME <input type="text" name="name">'
                   '<div><span style="width:100px;height: 500px;color:purple;font-size:30;font-weight:bold;">PASSWORD</span><input style="width:150px;" type="password" name="password" id="password" value="">'
                   '</div>'                   
                   '<input type="submit" value="Sign in">'
                   '</form></body></html>')

    def post(self):
        self.set_secure_cookie("user", self.get_argument("name"))
        time.sleep(10)
        self.redirect("/")

application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/login", LoginHandler),
], cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__")

application.listen(5000)
tornado.ioloop.IOLoop.current().start()

在我的代码中我有三个类BaseHandler, MainHandler and LoginHandler。任何帮助将不胜感激。


不要在 Tornado 方法中调用“sleep”:

http://www.tornadoweb.org/en/stable/faq.html

如果您想暂停该方法一段时间以向自己证明它是非阻塞的,请添加from tornado import gen并尝试:

async def post(self):
    self.set_secure_cookie("user", self.get_argument("name"))
    yield gen.sleep(10)
    self.redirect("/")

或者在 Python 2 中:

@gen.coroutine
def post(self):
    self.set_secure_cookie("user", self.get_argument("name"))
    yield gen.sleep(10)
    self.redirect("/")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步登录龙卷风 的相关文章

随机推荐

  • 将每行的最后一个非零元素设置为零 - NumPy

    我有一个数组A A array 1 2 3 4 5 6 7 0 8 9 0 0 我想将每行的最后一个非零更改为 0 A array 1 2 3 0 5 6 0 0 8 0 0 0 如何为任何 n m numpy 数组编写代码 谢谢 S 方法
  • 使用 Java 配置在 Spring 中重定向 404 错误

    如您所知 在 XML 中 配置方法是
  • Java 对象的“相同性”是如何定义的?

    我想将自定义类型的对象添加到集合中 我有几个相同的 即它们的公共变量具有相同的值 我不希望将 同一 对象的多个实例添加到集合中 但每次创建新对象时 总是会添加它 这是因为 Object 类的 equals 方法在对象上实现了最具辨别力的可能
  • 禁用线性布局内的所有编辑文本

    我正在尝试禁用线性布局内的所有字段 该线性布局中有许多 edittext 和 textview 但是 我只是想禁用 edittext 我能够禁用所有孩子 但我希望能够禁用编辑文本 有什么办法可以做到这一点吗 Where ll是你的线性布局
  • 编写自定义函数时将列名称传递给 dplyr::coalesce()

    我正在尝试编写一个将包装的函数dplyr coalesce 并将接受数据对象和列名称来合并 到目前为止 我的尝试都失败了 示例数据 library dplyr df lt data frame col a c bob NA bob NA b
  • AppSync S3对象检索

    我的文件目前正在根据提供的教程上传到 s3 存储桶 我有一个 Post 类型 其文件字段指向 S3Object S3Object 具有bucket key 和region 的值 我想允许我的用户下载他们上传的文件 但我无法通过查询访问 发布
  • 覆盖 SaveChanges 并设置 ModifiedDate,但如何设置 ModifiedBy?

    我有一个 ASP NET MVC3 Web 应用程序 包含 UI 业务 实体 和数据 DbContext 层 我正在使用 Entity Framework 4 1 Code First 现在 我正在推翻DbContext SaveChang
  • 是否有人有批处理文件来应用并在 Clearcase 中创建标签或基线

    这里我需要一个批处理文件 它可以应用并创建标签或基线到透明案例项目中的版本化元素 如果有人有这个 请提供给我 如果要创建 UCM 基线 则无需先创建标签 只需进入您的视图并设置基线 cd m myView myVob myRootCompo
  • 使用 android MediaPlayer 进行无缝播放

    我试图连续重复播放音频 没有任何间隙 我试过了 mediaplayer setLooping true 但它给出了重复时间之间的差距 并尝试了这个 mediaplayer setOnCompletionListener new MediaP
  • @keyframes 不支持阿拉伯语

    我尝试用 keyframes 用阿拉伯语写一个句子 但 keyframes 不支持阿拉伯语 并且出现难以理解的字符 caption background color black caption h1 after animation move
  • 使用 JavaFX 11 的自定义 JRE

    我正在使用 JDK 11 和 JavaFX 11 我使用 Jlink 为示例 FX 模块程序创建了一个自定义 JRE 但是当我尝试使用自定义 JRE 运行时 它会呈现如下错误 这就是我创建自定义 JRE 的方式 没有错误 jlink mod
  • jQuery 只允许数字、字母和连字符

    如何使用 jQuery 从字符串中删除除数字 字母和连字符之外的所有内容 我发现这段代码只允许使用字母数字字符 但我不确定如何添加连字符 text keypress function e var regex new RegExp a zA
  • FullCalendar 在周末和无周末之间切换

    我想知道 Arshaw 的 FullCalendar 是否有办法 1 将日历从显示周末更改为不显示周末 反之亦然 2 动态地将时隙间隔从30分钟更改为60分钟 换句话说 我想做的是 Clicking the button that show
  • 使用 JDBC 连接 Mysql 时出现 ClassNotFoundException

    当我尝试在命令行运行简单的 Java JDBC 程序时 出现以下错误 Exception in thread main java lang NoClassDefFoundError LoadDriver java Caused by jav
  • 将元组转换为字符串

    自从我发现boost lexical cast所有转换都轻而易举 直到尝试将元组元素转换为字符串 Like Int2String or Double2String I want 一种从任意数量元素的元组生成单个字符串的方法 由于转换的主题具
  • Git checkout 无意中删除了未跟踪的文件

    我遇到过 Git 的一个奇怪的行为 我有一个存储库 其中包含在 gitignore file 我所做的具体步骤 隐藏 4 个文件 git stash 查看了几个月前我的第一次提交 git checkout
  • Alamofire 5 逃避向前斜线

    在过去的几天里 我一直在谷歌上搜索并尝试有关 alamofire 前斜杠的自动转义 其中 path image png 变为 path image png 然而 如果您使用 swiftyJson 通过 httpBody 发送或使用 Alam
  • 在Python中有效地检查字符串是否由一个字符组成

    检查字符串是否有效的方法是什么s在Python中只包含一个字符 比如说 A 就像是all equal s A 其行为如下 all equal AAAAA A True all equal AAAAAAAAAAA A True all equ
  • 为什么 -moz-animation 不起作用?

    以下 CSS 在 Webkit 中运行良好 没有在 Opera 中检查过 但我知道它在 Firefox 中不起作用 有人能告诉我为什么吗 正确的类肯定会应用到我的 HTML 用 Firebug 检查它 我确实看到了 moz animatio
  • 异步登录龙卷风

    我使用 Tornado 创建了一个适用于同步方法的登录页面 现在我想将其设为异步 那么我应该对以下代码进行哪些更改 import tornado ioloop import tornado web import http import ti