【问题标题】:How to load a basic module from a cron job如何从 cron 作业加载基本模块
【发布时间】:2014-01-06 01:36:02
【问题描述】:

我在加载 GAE 模块时遇到问题。

我的 cron.yaml:

cron:
- description: call frontend instance to call module
  url: /callLoadAndProcess
  schedule: every day 01:00
  timezone: America/New_York

然后是我的app.yaml的相关部分:

- url: /callLoadAndProcess
  script: callLoadAndProcess.application
  secure: always
  login: admin

现在我的 callLoadAndProcess.py:

import sys
import webapp2
import os
import urllib2
import logging
from google.appengine.api import modules

class callLoadAndProcess(webapp2.RequestHandler):
    def get(self):
        modules.start_module("loadandprocess","1")

application = webapp2.WSGIApplication([('/callLoadAndProcess', callLoadAndProcess)],debug=True)

对于我的模块,我有一个loadandprocess.yaml,即:

application: [application name]
module: loadandprocess
version: 1
runtime: python27
instance_class: B4_1G
basic_scaling:
  max_instances: 1

handlers:
- url: /.*
  script: loadAndProcess.application
  login: admin

最后,loadAndProcess.py 是我想作为后端模块运行的脚本:

class loadAndProcess(webapp2.RequestHandler):
    def get(self):
            #DO STUFF

application = webapp2.WSGIApplication([('/loadAndProcess', loadAndProcess)],debug=True)

在我的开发服务器中,当我尝试通过管理页面运行 cron 作业时,我收到以下错误:

line 138, in _CheckAsyncResult
raise mapped_error()
InvalidVersionError

我觉得我设置正确...版本号匹配..我错过了什么吗?谢谢!

【问题讨论】:

  • 怎么启动dev_server.py,能贴出cmd line args吗?
  • 这是我启动服务器的方式:dev_appserver.py [appname]/app.yaml [appname]/loadandprocess.yaml [appname]/dispatch.yaml

标签: python google-app-engine module cron gae-module


【解决方案1】:

要在本地运行应用程序,请将两个.yaml 文件指定为dev_appserver.py:

dev_appserver.py -A your-app-id application.yaml worker.yaml

【讨论】:

  • 检查 cmets - 这已经是调用服务器的方式(更好的是,还包括 dispatch.yaml 文件)
猜你喜欢
  • 2022-11-08
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 2019-10-01
相关资源
最近更新 更多