저는 토네이도를 배우고 있으며 훌륭한 프레임 워크라고 생각합니다. main.py에서 몇 가지 메소드를 분리 할 때까지는 아무 문제가 없습니다. 내 서버 시작 프로그램입니다 main.py에서tornado.options.Error : 옵션은 이미
: 예를 들어
. 이 같은 일부 속성 정의 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')
어떻게 이런 종류의 문제가 발생하지 않도록 할 수 있습니까? 아니면 코드를 작성하는 다른 방법이 있습니까?
내가 이것을 복제 할 수있는 유일한 방법은 topic.py에 define() (포트 용)이 있습니다. topic.py에서 define()을 사용하지 않았습니까? –
아니요, topic.py에는 define()이 없습니다. 거기에는'from main import BaseHandler' 만 있고 main.py에는 define() 만 있습니다. 이제 baseHandler를 base.py와 같은 외로운 파일에 넣었고'main main'을 지금까지 만들 필요가 없습니다. – goofansu