1

많은 HTTP 요청을 만들어 데이터를 수집하고이를 데이터 저장소에 저장하는 기능이 있습니다. 모든 호출이 성공해야합니다. 그렇지 않으면 모든 호출이 롤백되어야합니다. 실행 시간은 10 분에 가깝습니다. 앱 엔진의 최대 거래 마감 시간은 기본 60 초입니다.App Engine에서 장기 실행 트랜잭션을 구현할 수 있습니까?

이 방법을 늘리면 기능이 트랜잭션이됩니까?

답변

1

불가능한 것처럼 보입니다. 문서에서 :

오류로 중단하기 전에 데이터 저장소가 결과를 반환하기를 기다리는 최대 시간 (초)입니다. 정수 또는 부동 소수점 값을 허용합니다. 기본값 (60 초)보다 높게 설정할 수는 없지만 특정 작업이 신속하게 실패하지 않도록 아래쪽으로 조정할 수 있습니다. (예 : 사용자에게 더 빠른 응답을 반환하고 작업을 다시 시도하거나 다른 작업을 시도하거나, 작업을 작업 큐에 추가). 그 어떤 쓸모가 있다면 트랜잭션이 성공적으로 완료 될 때에 만 때 당신이 작업을 트리거 할 수 있습니다 그러나

https://developers.google.com/appengine/docs/python/datastore/functions#create_transaction_options

.

https://developers.google.com/appengine/docs/python/datastore/transactions#Transactional_Task_Enqueuing

당신이 작업은 큐에 및 큐에-하면 될 트랜잭션이 성공적으로 최선을 다하고 있습니다 보장되도록 데이터 저장소 트랜잭션의 일부로 작업을 대기열에 추가 할 수 있습니다. 트랜잭션이 커밋되지 않으면 작업은 대기열에 들어 가지 않습니다. 트랜잭션이 커밋되면 작업은 대기열에 들어갈 수 있습니다.

0

을 파이썬. 백엔드는 요청 마감일, 높은 메모리 및 CPU 한도가없고 여러 요청에 대한 영구 상태가없는 특별한 App Engine 인스턴스입니다. App Engine에 의해 자동으로 시작되며 오랜 시간 동안 지속적으로 실행할 수 있습니다. 각 백엔드 인스턴스에는 요청에 사용할 고유 한 URL이 있으며 여러 인스턴스에 걸쳐 요청을로드 밸런스 할 수 있습니다.

백엔드는 사용자 또는 응용 프로그램의 다른 부분에서 HTTP 요청을 처리하고, 백그라운드에서 지속적으로 시작 및 실행하거나, 작업 대기열 작업 또는 Cron 작업에 의해 구동 될 수 있습니다. 위의 링크는 백엔드를 구성하는 방법,이를 사용하기위한 우수 사례 및 App Engine에서 백엔드를 청구하는 방법을 설명합니다.

+0

백엔드는 트랜잭션을 언급하지 않으므로 어쨌든 작동하지 않을 것이라고 생각합니까? – user1561108

+1

데이터를 가져 오는 것이 10 분이 걸리는 것입니까? 백엔드에서 데이터를 가져올 수 없으며 모든 호출이 성공했다는 것을 알게되면 데이터를 트랜잭션에 저장합니까? 나는 백엔드가 거래 한도를 연장 할 수 있다고 제안하지는 않는다. 거래를 시도하기 전에 백엔드에서 데이터 준비를 제안합니다. – user1258245