2010-06-01 11 views
5

Non sono un utente di Google App Engine. Tuttavia, ho capito che ti vengono addebitati tempo CPU e altre risorse. Quali sono le conseguenze se ti capita di creare un ciclo infinito? Google lo interromperà mai, o dovrai farlo manualmente in qualche modo manualmente?Conseguenze di un ciclo infinito su Google App Engine?

Sono uno sviluppatore di hobbisti preoccupato per un piccolo errore che potrebbe costare centinaia.

risposta

7

(io sono un dipendente di Google, ma hanno poca esperienza con AppEngine Si prega di non considerare questo una risposta "ufficiale"..)

Sto indovinando che si sta utilizzando il servlet Java API - se non , per favore specificare.

Dal AppEngine servlet docs:

Un gestore di richieste ha un numero limitato di tempo per generare e restituire una risposta ad una richiesta , tipicamente circa 30 secondi. Una volta raggiunta la scadenza , l'handler di richiesta viene interrotto.

Non so come/se questo si verifica in un circuito chiuso che non consentirebbe alla VM di interromperlo in Java "normale".

+0

Grazie mille, questo è il tipo di informazione che cercavo. – doppelgreener

+6

Il ciclo stretto può impedire l'emissione dell'errore di scadenza "soft", ma il "duro" terminerà ancora l'handler dopo 30 secondi. Inoltre, smettila di parlare sul mio terreno, Jon. ;) –

+1

Inoltre, non importa se stai usando le versioni java o python. Entrambi ti interromperanno dopo 30 secondi. –

3

Mentre Jon gestiva il caso di basso livello di un ciclo infinito, potrebbe anche esserci una situazione in cui uno dei gestori viene chiamato ripetutamente un numero eccessivo di volte - forse si configura accidentalmente qualcosa per eseguire il backup dell'intero archivio dati ogni secondo invece di una volta al giorno. In teoria, è possibile utilizzare un sacco di risorse, anche in blocchi di 30 secondi. Tuttavia, non correrai il rischio di accumulare un'enorme quantità di spese. Hai la possibilità di impostare un limite su quanto vuoi "spendere" al giorno. Se non hai più una quota, la tua app restituirà un errore, non ti metterà in prigione del debitore.

+0

Impostazione di una quota !? Oh wow, questa è una fantastica notizia! Un internet e un +1 per te! Quello che mi preoccupa di più sono i cicli infiniti poiché sono abbastanza comuni, non troppo chiamate eccessive, anche se non posso dire di aver effettivamente considerato quel tipo di hogging delle risorse. Terrò d'occhio per questo. Grazie Peter. – doppelgreener

+0

inoltre, se stai solo armeggiando/testando, puoi stare con la quota libera. in tal caso, non avrai nemmeno dato loro alcuna informazione di pagamento, così puoi dormire la notte senza preoccupazioni per i loop infiniti. –

1

Google AppEngine impone un limite su quanto tempo una richiesta può richiedere prima di essere terminato,

C'è un roughly 30 second limit imposto su quanto tempo una richiesta deve prendere prima che venga terminata. Tuttavia, poco prima che il processo venga terminato, verrà generata un'eccezione DeadlineExceededError.

Inoltre ci sono per-minute quotas per impedire all'applicazione di consumare troppe quote in un breve periodo di tempo. È molto improbabile che la tua applicazione superi la quota al minuto in condizioni normali, ma, se necessario, aumenta questo contingente can be requested.