404来自谷歌应用程序引擎django应用程序上的cron作业

时间:2017-08-19 22:19:24

标签: python django google-app-engine cron yaml

所以,其他一切都有效......前言。但是,我还没有真正移出管理界面。我试图从API获取数据并将其插入数据库(如果有更改)。我设法写了一个可以做到这一点的脚本(理论上......它可以在本地完成),但是我无法在云中获取应用程序来识别它的存在。我已经按照谷歌的建议将其添加到app.yaml和cron.yaml无效。

我是否需要将此添加到urls.py中?到目前为止,我还没有使用过处理程序,我不确定settings.py会发生什么,yaml文件会发生什么,以及这有多少是小精灵。

这里是相关文件...... app.yaml中

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT mysite.wsgi
threadsafe: yes

beta_settings:
    cloud_sql_instances: [redacted]

runtime_config:
  python_version: 3

health_check:
  enable_health_check: False

handlers:
- url: /static
  static_dir: static/
- url: /run/get_data/
  script: JSONdownload.app
  login: admin
- url: .*
  script: mysite.wsgi.application

cron.yaml

cron:
- description: "get data"
  url: /run/get_data/
  schedule: every 5 minutes

JSONdownload.py

#!/usr/bin/env python
# /var/spool/cron/crontabs
import json
import urllib2

from django.http import HttpResponse
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

from .models import Game
from .models import Team


class JSONdownloadHandler(webapp.RequestHandler):
    def get(self):
        self.response.write('cron')
class MainHandler(webapp.RequestHandler):
    def get(self):
        self.response.write('yay')

我为一个基本的python应用程序找到了很好的资源......但是对于这种情况没有一个真的......任何人都知道比我正在做的更好的事情,请告诉我!

2 个答案:

答案 0 :(得分:1)

您将flexible environment app.yaml的元素与standard environment app.yaml

的元素混合在一起

特别忽略script: JSONdownload.app部分。您需要在/run/get_data/应用内添加mysite.wsgi路径的处理程序,也可以从那里调用JSONdownload.py代码。

以某种方式相关:cron job in google app engine not working

答案 1 :(得分:0)

所以...那是我没有路线到位置。我实际上只能设置一个路由(管理员对它)到URL,然后能够通过cron.yaml调用它。