2014-11-05 3 views
0

내 프로젝트는 ndb를 읽고 쓰고 JSON 사전으로 응답하는 간단한 JSON + REST API 서버입니다. 내 프로젝트에는 backends.yaml 파일이 없습니다. 그리고 내 애플리케이션 제목의 내용은 다음과 같습니다 내 프로젝트에백엔드 인스턴스 백과 백엔드없이 추가

application: my-app 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: yes 

handlers: 
- url: /api/v1/.* 
    script: gprofile.application 


libraries: 
- name: webapp2 
    version: "2.5.2" 
- name: ssl 
    version: latest 
- name: jinja2 
    version: latest 

유일한 다른 YAML 파일을 자동으로 생성 index.yaml 파일의 몇 가지 있습니다. 아직 백엔드 시간이 쌓여 있습니다. 대시 보드에 따라 시간당 8 백엔드 인스턴스 시간이 누적됩니다. 즉, 여하튼 8 백엔드 인스턴스를 실행합니다. 내 프로젝트 디렉토리에 appcfg.py -v backends . list을 실행하면 다음과 같은 출력 제공 : 내가 발견

Application: my-app 
Warning: This application uses Backends, a deprecated feature that has been replaced by Modules, which offers additional functionality. Please convert your backends to modules as described at: https://developers.google.com/appengine/d 
Host: appengine.google.com 
2014-11-05 20:23:29,571 INFO appengine_rpc_httplib2.py:268 Too many retries for url https://appengine.google.com/api/backends/list?app_id=my-app 
Error 500: --- begin server output --- 
Server Error (500) 
A server error has occurred. 
--- end server output --- 

또 하나의 특이한 점은 추가 YAML 파일이없는의 inspite이다, 나는 아직도 (떨어져 기본 모듈에서) 정의 3 개 추가 모듈이있다. 그리고 이들 중 하나는 Resident으로 표시되어 있는데 이는 대시 보드에서 시스템을 종료 할 수 없음을 의미합니다.

누군가 내가 여분의 yaml 파일없이 정의 된 추가 모듈을 어떻게 설명하는지, backend.yaml없이 백엔드에 대해 청구되는 이유를 설명 할 수 있습니까?

업데이트 1 : "계산> App Engine> 버전"에서 대시 보드에서 수동으로 삭제하여 정의되지 않은 모듈을 삭제할 수있었습니다. 그들이 처음에 어떻게 거기에 도착했는지 아직도 알 수 없습니다.

업데이트 2 : 개발 초기에 두 개의 백엔드를 정의했습니다. 그러나 yaml과 관련 코드는 삭제되었습니다. 내 프로젝트를 업데이트 한 후에도 오래된 백엔드가 계속 유지 될 수 있습니까? 그리고 만약 그렇다면 appcfg가 그것들을 나열 할 수 없을 때 어떻게 삭제할 것입니까?

답변

1

내 가정 (확인을 것)

yaml 파일 (모듈 또는 대기열 정의 등)이 app-engine에 추가되면 yaml 파일을 삭제하고 프로젝트를 업데이트하고 기존 리소스가 자동으로 예상 될 수 없다고 생각합니다. 제거되었습니다. 대시 보드 자체에서 제거해야합니다. 그리고 이렇게하더라도 더 이상 정의되지 않았 음을 나타내는 새로운 yaml 파일을 먼저 업로드해야합니다.

예 : 대기열의 경우에는 먼저 비어있는 queue.yaml을 업로드해야만 개발이 끝나기 전에 생성되어 사용되지 않은 작업 대기열을 삭제할 수있었습니다.

모듈의 경우 "계산> App Engine> 버전"으로 이동하여 수동으로 모듈을 삭제해야했습니다 (모듈이 소스의 아무 곳에서나 정의되지 않았더라도).

누적 된 백엔드 시간은 Resident 모듈 때문일 수 있습니다. 모듈을 삭제 한 이후로 지금 appcfg.py backends . list을 실행하면 No backends configured for app: s~my-app 응답이 나옵니다. 이전에 얻은 500 개의 응답은 문제의 모듈에 관련 소스 코드가 없었기 때문일 수 있습니다.app-engine이 반복적으로이 모듈을 시작하려고 시도했기 때문에 인스턴스 시간이 누적되었습니다. (소스 코드가 없으므로)

다시 말하지만, yaml 파일을 삭제하면 자원 제거를 의미하는데, 이는 꽤 믿기 어렵습니다. 그렇다면 Google은 실제로이 동작을 어딘가에 문서화해야합니다.

0

는 기본적으로이를 선택해야하더라도, 나는 당신의 애플리케이션 제목에 "모듈"키를 추가하려고 할 것이다 : 나는이 문제를 알아 낸 것 같아

application: my-app 
    module: default 
    version: 1 
    runtime: python27 
    api_version: 1 
    threadsafe: yes 
+0

예 기본적으로 기본 모듈을 사용합니다. 추가 모듈을 삭제할 수있었습니다 (내 질문에 업데이트 됨). –

+0

필자는 yaml 파일을 소스에서 제거한다고해서 해당 기능을 제거하지 않는다고 생각합니다. 예를 들면. 나는 queue.yaml이 없어도 여분의 작업 큐를 알아 차렸고 어떤 다른 개발자가 queue.yaml을 추가 한 다음 queue.yaml 파일을 삭제했다는 것을 깨달았다. 이 문제를 해결하기 위해 빈 queue.yaml 파일을 다시 추가해야했으며 작업 대기열은 대시 보드에서 사라졌습니다. 내가 추가 모듈을 추측하고 또한 같은 dev에 의해 어느 시점에서 추가 한 다음 그냥 삭제 (나는 우리가 초기에 버전 제어가 없었기 때문에 확인할 수 없습니다) –