首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我的tornado应用程序不能工作?(tornado-blog with aiomysql)

为什么我的tornado应用程序不能工作?(tornado-blog with aiomysql)
EN

Stack Overflow用户
提问于 2019-04-09 22:34:17
回答 1查看 179关注 0票数 0
代码语言:javascript
复制
import tornado.ioloop
import tornado.web
import tornado.options
import tornado.locks
import os.path

from tornado.options import define, options
from aiomysql import create_pool

define("port", default=8080, help="run on the given port", type=int)
define("db_host", default="localhost", help="blog database host")
define("db_port", default=3306, help="blog database port")
define("db_database", default="{db_name}", help="blog database name")
define("db_user", default="{db_user}", help="blog database user")
define("db_password", default="{password}", help="blog database password")

async def maybe_create_tables(db):
    async with db.acquire() as conn:
        async with conn.cursor() as cur:
            try:
                await cur.execute("SELECT COUNT(*) FROM user LIMIT 1")
                await cur.fetchone()
            except Exception as e:
                with open("schema.sql") as f:
                    schema = f.read()
                    await cur.execute(schema)

class Application(tornado.web.Application):
    def __init__(self, db):
        self.db = db
        handlers = [
            (r"/", HomeHandler),
            (r".*", BaseHandler)
        ]
        settings = dict(
            debug=True
        )
        super(Application, self).__init__(handlers, **settings)

class BaseHandler(tornado.web.RequestHandler):
   def set_default_headers(self):
        self.set_header("Server", "tornado")

class HomeHandler(BaseHandler):
    async def get(self):
        self.write("hello")

async def main():
    tornado.options.parse_command_line()

    async with create_pool(
        host=options.db_host,
        port=options.db_port,
        user=options.db_user,
        password=options.db_password,
        db=options.db_database,
    ) as db:
        await maybe_create_tables(db)
        app = Application()
        app.listen(options.port)

    shutdown_event = tornado.locks.Event()
    await shutdown_event.wait()

if __name__ == "__main__":
    tornado.ioloop.IOLoop.current().run_sync(main)

我从这里复制了这些代码(https://github.com/xzhdream/tornado-blog-aiomysql/blob/master/blog.py),但它不起作用。当我运行这个应用程序时,没有输出错误,但是控制台冻结了。必须正确设置Mysql和Mysql用户。我检查过很多次了。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55595320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档