404来自谷歌应用引擎django应用程序的cron作业
Posted
技术标签:
【中文标题】404来自谷歌应用引擎django应用程序的cron作业【英文标题】:404 from cron job on google app engine django app 【发布时间】:2018-01-28 07:52:30 【问题描述】:所以,其他一切都有效......作为序言。但是,我并没有真正移出管理界面。如果有更改,我正在尝试从 API 获取数据并将其插入数据库。我已经设法编写了一个可以做到这一点的脚本(理论上......它可以在本地完成),但我无法让云中的应用程序识别它的存在。我已经按照 Google 的建议将其添加到 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 应用程序找到很好的资源......但对于这种情况真的没有......任何人都知道比我正在做的更好的事情,请告诉我!
【问题讨论】:
你有JSONdownload.app
吗?
我有一个 JSONdownload.py - 我已经移动了一些东西,我至少可以从一个视图调用和运行脚本...我在想接下来我应该应该 可以从 cron 调用吗?如果我能做到?
【参考方案1】:
所以...是我没有路由到这个位置。我实际上能够为 URL 设置一个路由(使用管理员),然后能够通过 cron.yaml 调用它。
【讨论】:
【参考方案2】:您将flexible environment app.yaml
的元素与standard environment app.yaml
的元素混为一谈
特别是script: JSONdownload.app
部分被忽略。您需要为/run/get_data/
路径inside 添加处理程序,您的mysite.wsgi
应用程序可能会从那里调用JSONdownload.py
代码。
不知何故相关:cron job in google app engine not working。
【讨论】:
以上是关于404来自谷歌应用引擎django应用程序的cron作业的主要内容,如果未能解决你的问题,请参考以下文章
谷歌应用引擎+python(django)部署错误:加载MySQLdb模块时出错
来自 mandrill 的 ValidationError 与谷歌应用引擎的 urlfetch