大规模Python Tornado项目的最佳结构是什么?

4 投票
1 回答
4621 浏览
提问于 2025-04-17 19:07

我正在使用mongodb数据库,搭配tornado作为我的核心框架。目前,我的主文件里有很多处理程序。这个应用是一个多用户的网页应用,用户之间可以互相链接,也就是有一个“好友”系统。

My current structure is:
    templates/
    static/
    main.py (contains all handlers)
    user_actions.py
    auth_actions.py
    .
    .
    .
    bar_actions.py

大部分处理程序对应着一些操作文件。比如,处理好友请求的程序对应着user_actions.py文件里的一个函数,这个函数接受数据库和用户ID作为参数。我觉得这样的结构对于一个大项目来说不是最好的布局。我是不是应该有一个模型文件,里面包含当前用户的模型,还是说这只是多余的?现在我把当前用户存储为一个字典,放在一个cookie里。

1 个回答

8

如果你有很多处理程序,每个处理程序都有自己的代码,你可以把它们分开,放到一个叫 handlers 的文件夹里,这个文件夹放在你的应用程序内部。

Tornado 并没有强制要求你使用特定的结构,所以我建议你去看看一些示例的 Tornado 项目,或者在 GitHub 上找找开源的 Tornado 项目,这样可以了解别人是怎么组织代码的。

我只做过一个 Tornado 项目,但我在网上找到的例子都遵循了我上面提到的这种做法:

├── app.py
├── common
│   ├── __init__.py
│   └── utils.py
├── custom_settings.py
├── handlers
│   ├── user_handler.py
│   ├── auth_handler.py
│   └── __init__.py
├── __init__.py
├── requirements.txt
├── scripts
├── supervisord.conf
└── tests
    ├── __init__.py
    ├── test_common.py
    └── test_handlers.py

撰写回答