2010-06-29 3 views
1

mod_wsgi에 예기치 않은 동작이 제출하거나 관련 데이터베이스 작업을

좀 자바 스크립트 북마크 기능과 mod_wsgi에와 아파치에 사이트를 배포 문제의 비트 [아래 업데이트] 알파 사이트는 여기에서 사용 가능합니다 : stemhub.org. 문제는 (브라우저의 메뉴 버튼입니다) 북마크 다음 링크에 대한 메타 데이터를 저장하는 형태를 반환

http://stemhub.org/submit/http://the-users-link.com/here

같은 페이지로 제출하는 것입니다. 뷰 함수 (flask/werkzeug 앱)는 링크가 이미 추가되었는지 확인하기 위해 데이터베이스를 검사 한 다음, 기존 또는 새로 할당 된 링크 ID가있는 양식을 반환합니다.이 ID는 일종의 타이밍 문제를 유발할 수 있습니다. 매우 이상하게도, 링크를 처음 제출할 때 "찾을 수 없음"아파치 오류가있는 http://stemhub.org/submit/http://the-users-link.com/here 페이지가 표시되지만 페이지를 다시로드하면 의도 한대로 양식이 표시됩니다. 오류 로그에는 스레딩 예외에 대한 메시지가 포함되어 있지만 예상대로 사이트가 정상적으로 작동하면 오류가 발생합니다.

토네이도에서 실행중인 다른 포트 (stemhub.org:5000)에는 응용 프로그램이 병렬로 배포되어 있으며 로컬 개발 버전뿐 아니라 정상적으로 작동합니다. 여기

이 기회에 그들은 문제가되지는 북마크 있습니다 속하는 어떤 이유로 : javascript:(function(){window.open('http://stemhub.org:5000/submit/'+encodeURIComponent(window.location.href),'height=200,width=150')}())

문제 포트 80 버전 : javascript:(function(){window.open('http://stemhub.org/submit/'+encodeURIComponent(window.location.href),'height=200,width=150')}())

UPDATE

포트 5000 버전을 작업 javascript 메소드를 변경하는 다른 태그로 encodeURIComponentencodeURI으로 설정하면 적어도 FF와 Chrome에서는 모든 것이 정상적으로 작동합니다. 그러나 Graham Dumpleton이 미래에 이것에 대해 좀 더 합리적인 조언을 할 것입니다.

답변

2

문제가 무엇이든지간에 URL에 두 번째 URL을 삽입하는 방식은 Apache에서 작동하지 않습니다. 이는 Apache가 반복되는 슬래시를 단일 슬래시로 접을 수 있기 때문에 Apache가 호스트하는 응용 프로그램이 PATH_INFO에서 볼 수있는 모든 단일 슬래시가됩니다.

다른 말로하면, mod_wsgi 문제가 아니며 Apache와 함께 다른 동적 웹 응용 프로그램 호스팅 메커니즘을 사용하는 경우 발생할 수 있습니다.

아직은 수정되지 않은 URL이 REQUEST_URI에 있음을 지적 할 수도 있지만,이를 기반으로 스플릿과 SCRIPT_NAME 및 PATH_INFO를 매핑하는 방법을 배우는 것이 반드시 좋은 생각은 아닙니다. Apache에서 다시 쓰기 규칙을 사용하는지 여부에 따라 다릅니다.

대신 URL 경로가 아닌 쿼리 문자열의 일부인 두 번째 URL을 조사 할 것을 제안하십시오.

관련 문제