2013-03-25 5 views
0

glowscript.org에서 찾은 응용 프로그램의 GAE를 Python 2.5에서 Python 2.7로 업데이트 할 때 심각한 문제가 있습니다. 현재 GAE Launcher 1.7.6을 사용하여 Windows에서 로컬로 테스트 중입니다.Python 2.5와 Python 2.7 사이의 심각한 GAE 호환성 문제

사용자는 공백이 포함 된 이름으로 폴더를 만들 수 있으며 응용 프로그램은 공백을 '% 20'(으)로 변환하여 데이터 저장소의 키를 만듭니다. 이 폴더 내부의 파일 이름도 마찬가지입니다. glowscript.org에는 데이터가 그러한 키에 의존하는 상당수의 사용자가 존재합니다.

파이썬 2.7 버전에서 이상한 문제를 로컬에서 디버깅하려고 시도하면서 GAE 데이터 저장소 시스템에 큰 변화가 있음이 분명해졌습니다. 사용자가 'Test Cases'라는 폴더를 생성한다고 가정합니다. glowscript.org와 일치하여이 폴더 이름은 'Test % 20Cases'로 변환되어 PUT 작업의 키로 사용됩니다.

folder = '테스트 % 20Cases' f = 폴더 (parent = 사용자 이름, key_name = 폴더 , public = True) # Folder는 db.Model에서 상속받습니다. f.put()

파이썬 2.7 및 실행기 1.7.6을 실행할 때 로그에 표시된 내용은 '% 20'이 공간 :

200 "/ API/사용자/test0324k/폴더/테스트 케이스 HTTP/1.1 PUT"-

을 나는 샘을 수행 할 때

-

"PUT/API/사용자/test0324k/폴더/테스트 % 20Cases HTTP/1.1"200 : 파이썬 2.5 GAE 실행기 1.7.2와 전자 조작 (로컬), 이것은 내가 로그에 표시되는 내용입니다

웹에 배포하면 데이터에 '% 20'이 (가) 포함 된 키가 있기 때문에 오류가 발생하므로 해당 키에 연결할 수 없습니다. Python 2.5 버전은 이미 사용되지 않으므로 곧 사라질 예정입니다. 많은 사람들의 작업을 망치지 않고 앞으로 나아갈 수있는 방법은 무엇입니까?

+0

폴더 모델에서 공백을 바꾸지 않는 이유는 무엇입니까? 그냥 넣기 전에. –

+0

이러한 로그 메시지는 데이터 저장소와 아무 관련이 없습니다. 그들은 HTTP PUT 요청을 로깅하고 있습니다. –

답변

0

"파이썬 2.5 버전은 사용하지 않을 수 없으며 곧 사라질 예정이며 곧 사라질 예정입니다."

2012 년 3 월 8 일에 Python 2.5의 비추천사가 blog post으로 발표되었는데, 비추천 정책 (섹션 7.2 : https://developers.google.com/appengine/terms)을 언급했습니다. 나는 그것을 읽는 것이 좋습니다. 그 부분은 짧고 요점입니다.

Python 2.5와 2.7 스택 사이에 예기치 않은 변화가 있으면보고 해 볼 가치가 있습니다. normal channels을 통해 신고서를 제출하십시오. (당신이 여기에 적어 놓은 내용을 거의 복사/붙여 넣을 수 있습니다.)

% 20의 키를 만든 다음 (URL은 Google이 아닌) 탈출하지 않고 매우 얇은 얼음을 스케이트를 타는 것입니다.

+0

나는 항상 당신을 위해 인코딩을하지 않기 위해 어딘가에서 어떤 것을 기대할 수 있기 때문에 당신은 항상 입출력에서 % 20을 정규화하기를 원한다는 것에 동의한다. (즉, 일부 "+"문자를 얻기 시작합니다 .-) –

+0

저는 앱의 일부분을 상속 받았으며, 지금 내 동료가 공간을 % 20으로 변환하여 키를 만드는 이유가 분명하지 않습니다. 나는 당신이 말하는 것처럼 "정상적인 채널"로 보고서를 제출할 것입니다. – user1114907

+0

잘못된 인상을주었습니다. 나는 바로 잡아야합니다. 공간의 기발한 문제는 아니지만 더 일반적입니다.GlowScript는 서버에 정보를 보내기 전에 encodeURIComponent()를 사용합니다.이 작업은 적절한 작업이며 데이터 저장소를 검색하는 데 사용되는이 인코딩 된 키입니다. 문제는 파이썬 2.7 버전이이 변환 된 키를 사용하지 않는다는 것인데, 변환하지 않으면 glowscript.org의 기존 데이터 저장소에서 데이터를 찾을 수 없다는 것입니다. – user1114907