2012-04-04 2 views
1
에 정의되어 있습니다.

저는 토네이도를 배우고 있으며 훌륭한 프레임 워크라고 생각합니다. 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') 

어떻게 이런 종류의 문제가 발생하지 않도록 할 수 있습니까? 아니면 코드를 작성하는 다른 방법이 있습니까?

+0

내가 이것을 복제 할 수있는 유일한 방법은 topic.py에 define() (포트 용)이 있습니다. topic.py에서 define()을 사용하지 않았습니까? –

+0

아니요, topic.py에는 define()이 없습니다. 거기에는'from main import BaseHandler' 만 있고 main.py에는 define() 만 있습니다. 이제 baseHandler를 base.py와 같은 외로운 파일에 넣었고'main main'을 지금까지 만들 필요가 없습니다. – goofansu

답변

3

BaseHandler를 main.py와 다른 파일로 이동해야합니다. 문제는 main.py에 대한 코드를 두 번 효과적으로로드한다는 것입니다. 애플리케이션을 시작할 때 한 번, topic.py로 코드를 가져올 때 다시 한 번.

'pagemanager.py'와 같은 별도의 파일을 만들고 거기에 공유 클래스, 함수, 코드를 넣어 두는 것이 좋습니다. 그런 다음 토네이도 초기화와 관련된 코드에 문제를 일으키지 않고 main.py 및 topic.py로 가져옵니다.

+0

좋아, 해냈다. BaseHandler를 base.py로 이동하면 잘됩니다. 고맙습니다. – goofansu

+0

다행입니다. – Drahkar

+0

내 문제를 해결했습니다! 고맙습니다! –