Dans cet exemple de code l'URL de l'application semble être déterminé par cette ligne dans l'application:Main.py ou app.yaml détermine-t-il l'URL utilisée par la tâche périodique App Engine dans cet exemple?
application = webapp.WSGIApplication([('/mailjob', MailJob)], debug=True)
mais aussi par cette ligne dans le gestionnaire d'application de app.yaml:
- url: /.*
script: main.py
Cependant, l'URL de la tâche cron est définie par cette ligne:
url: /tasks/summary
il semble donc l'utilitaire cron appellera « /tasks/summary
» et en raison de l'application h andler, cela provoquera l'invocation de main.py
. Est-ce que cela signifie que, pour autant que l'Cron concerne, la ligne dans l'application qui définit l'URL est étrangère:
application = webapp.WSGIApplication([('/mailjob', MailJob)], debug=True)
. . . puisque la seule URL requise par la tâche cron est celle définie dans app.yaml.
app.yaml
application: yourappname
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
script: main.py
cron.yaml
cron:
- description: daily mailing job
url: /tasks/summary
schedule: every 24 hours
main.py
#!/usr/bin/env python
import cgi
from google.appengine.ext import webapp
from google.appengine.api import mail
from google.appengine.api import urlfetch
class MailJob(webapp.RequestHandler):
def get(self):
# Call your website using URL Fetch service ...
url = "http://www.yoursite.com/page_or_service"
result = urlfetch.fetch(url)
if result.status_code == 200:
doSomethingWithResult(result.content)
# Send emails using Mail service ...
mail.send_mail(sender="[email protected]",
to="[email protected]",
subject="Your account on YourSite.com has expired",
body="Bla bla bla ...")
return
application = webapp.WSGIApplication([
('/mailjob', MailJob)], debug=True)
def main():
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
contexte Assez a été fourni sans ajouter l'URL. Vous êtes grincheux et faites des histoires inutiles. –
@David, l'URL aurait aidé - J'ai dû le localiser avec une recherche pour confirmer que le code & config il est en effet incomplète, donc la réponse à la question posée dans le titre est "ni ce main.py ni cette app.yaml définit quel code doit être exécuté pour servir cette URL "(c'est-à-dire, tel que présenté, cet ensemble de fichiers de code et de configuration ne fonctionnera pas correctement). –