Ihre app.yaml Datei vermischt die Standardumgebung Element in eine flexible environment configuration, also wird es vermutlich ignoriert. Sie können die Cron-Anfragen wahrscheinlich in den Logs der App in der Entwicklerkonsole sehen (wahrscheinlich mit Fehlern).
Sie müssen sich für /cronapp
in Ihrem App Code, nicht in app.yaml
einen Handler hinzuzufügen. Nicht ganz sicher, wie Sie das tun (ich verwende immer noch nur die Standardumgebung), es hängt von Ihrer App und/oder ihrem Framework ab. Werfen Sie einen Blick auf die Hello World code review für eine Flasche Beispiel.
Update:
ich nicht ganz korrekt sein kann, basierend ich meine Antwort auf Dokumentation, aber ich habe gerade bemerkt, einige Ungereimtheiten (ich dafür eine Dokumentation Feedback an Google gesendet werden).
Die flexible Umgebung Securing URLs for cron erwähnt ein paar Lösungen (die meist aus the standard environment equivalent kopiert erscheint):
- man in der Tat auf der Grundlage der
login: admin
Option handler
:
Sie ein einschränken URL durch Hinzufügen von login: admin
zum Handler Konfigurationsabschnitt in app.yaml
. Für weitere Informationen siehe Securing URLs
Aber handler
ist nicht im Configuring your App with app.yaml erwähnt und die Securing URLs verweisen auf einen nicht vorhandenen Tag. Ich bin mir also nicht sicher, ob das tatsächlich funktioniert oder nicht.
- ist der zweite auf der Grundlage der
X-Appengine-Cron
Header (das gleiche wie in der Standardumgebung):
Anfragen aus dem Cron-Service wird auch einen HTTP-Header enthalten:
X-Appengine-Cron: true
Der Header X-Appengine-Cron
wird intern von Google App Engine festgelegt. Wenn Ihr Anforderungshandler diesen Header findet, kann er darauf vertrauen, dass die Anfrage eine Cron-Anfrage ist. Wenn die Kopfzeile in einer externen Benutzeranforderung an Ihre App vorhanden ist, wird sie entfernt, mit Ausnahme von Anforderungen von angemeldeten Administratoren der Anwendung, die die Kopfzeile für Testzwecke festlegen dürfen.
Aber in Removed headers wird erwähnt, dass:
Darüber hinaus sind einige ausgewählte Header, die das folgende Muster entsprechen aus der Anforderung entfernt werden:
Es ist unklar, ob sich dies auf X-Appengine-Cron
erstreckt oder nicht. Es ist einen Versuch wert. Dies ist meine Überprüfung in der (Standard-env, webapp2-basierten) Cron-Handler-Code:
Dank Dan. Cron funktioniert gut, wenn ich den Handler direkt in die App bringe. Aber ich möchte nicht, dass die Außenwelt diese URL anruft. Dies sollte nur über cron erreichbar sein. Irgendwelche Ideen, wie man das einschränkt? – user1251323
Danke Dan für die ausführliche Antwort. Ich habe mit X-app engine-cron in den Headern getestet, wie Sie gesagt haben, aber es sieht so aus, als wäre es nicht mit der Kopfzeile in der flexiblen Umgebung gesendet. Ich werde ein Ticket mit Google eröffnen. – user1251323
Ich bin mir nicht sicher, was jetzt passiert ist. aber ein neuer Einsatz in einem neuen, neuen Projekt scheint mit X-AppEngine-Cron-Lösung funktioniert zu haben. Danke nochmal für deine Hilfe. – user1251323