gpt4 book ai didi

Tornado .选项.错误: Option already defined in

转载 作者:行者123 更新时间:2023-12-02 17:00:06 33 4
gpt4 key购买 nike

我现在正在学习tornado,我认为这是一个非常优秀的框架。一切都很好,直到我将一些方法从 main.py 中分离出来。

例如:

在 main.py 中,这是我的服务器启动程序。我使用tornado.options.define来定义一些属性,如下所示:

define("port", default=8888, help="run on the given port", type=int)
define("mysql_host", default="127.0.0.1:3306", help="blog database host")
define("mysql_database", default="forum", help="database name")
define("mysql_user", default="root", help="database user")
define("mysql_password", default="passwd", help="database password")

里面有一个BaseHandler:

class BaseHandler(tornado.web.RequestHandler):
@property
def db(self):
return self.application.db

def get_current_user(self):
return self.get_secure_cookie("username")

在另一个文件中,例如 topic.py,topic.py 中的每个处理程序都会扩展 main.py 中的 BaseHandler,因此我像这样导入 BaseHandler:

from main import BaseHandler

然后当我启动程序时出现问题:

Traceback (most recent call last):
File "/Users/abc/money/main.py", line 85, in <module>
define("port", default=8888, help="run on the given port", type=int)
File "/Library/Python/2.7/site-packages/tornado-2.2-py2.7.egg/tornado/options.py", line 93, in define
options[name].file_name)
tornado.options.Error: ('Option %r already defined in %s', 'port', '/Users/suyejun/Dropbox/money/main.py')

如何避免此类问题?或者还有其他方法来编写代码吗?

最佳答案

您需要将 BaseHandler 移动到与 main.py 不同的文件中。您遇到的问题是您实际上两次加载了 main.py 的代码。启动应用程序时一次,将代码导入 topic.py 时再次。

我建议创建一个名为“pagemanager.py”的单独文件,并将所有共享类、函数、代码放在那里。然后,您将它们导入 main.py 和 topic.py 中,而不会导致特定于 Tornado 初始化的代码出现问题。

关于 Tornado .选项.错误: Option already defined in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10007015/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com