2010-02-17 5 views
13

Existe-t-il un moyen d'exécuter le serveur de développement du moteur de l'application en mode lecture seule afin de simuler la maintenance planifiée par Google qui met le magasin de données en mode lecture seule?App Engine SDK DevServer Mode lecture seule?

Gracefully Degrading During Scheduled Maintenance

+2

+1: question intéressante! Peut-être déposer un "problème" avec le tracker problème GAE? – jldupont

+0

Une observation très astucieuse. Peut-être que Nick Johnson en tiendra compte et aidera-t-il à accélérer le processus? S'il vous plaît? –

+2

GAE numéro 1811: Autoriser les administrateurs utilisateurs à désactiver les fonctionnalités de test, ce qui demande à peu près la même chose et il ne semble pas y avoir encore de solution. J'espère que Google en fera une priorité. –

Répondre

2

Je souhaite qu'il y avait une case à cocher qui rendrait le datastore en lecture seule. Ce hack semble faire ce dont j'ai besoin. Mettez ce qui suit dans votre gestionnaire principal:

from google.appengine.runtime.apiproxy_errors import CapabilityDisabledError 
from google.appengine.api import apiproxy_stub_map 

def make_datastore_readonly(): 
    """Throw ReadOnlyError on put and delete operations.""" 
    def hook(service, call, request, response): 
    assert(service == 'datastore_v3') 
    if call in ('Put', 'Delete'): 
     raise CapabilityDisabledError('Datastore is in read-only mode') 
    apiproxy_stub_map.apiproxy.GetPreCallHooks().Push('readonly_datastore', hook, 'datastore_v3') 

def main(): 
    make_datastore_readonly() 

Il a été trouvé ici: http://groups.google.com/group/google-appengine/msg/51db9d51401715ca

+0

On dirait une bonne solution mais je ne l'ai pas encore testé. Nick Johnson a récemment fait un post sur ce problème: http://blog.notdot.net/2010/03/Handling-downtime-The-capabilities-API-and-testing Il va plus loin dans l'API Capabilities utilise que pour les crochets. –