Я пытался запустить задание cron с помощью GAE (код, разработанный на Python), но когда я запускаю задание, оно завершается сбоем без какого-либо сообщения об ошибке - я ничего не могу найти в журналах.
Это происходит для службы, для которой я использую гибкую среду.
Это структура моих файлов:
my_service.yaml
выглядит так:
service: my_service
runtime: custom
env: flex
env_variables:
a:
b:
my_service.app
выглядит следующим образом:
<code>from __future__ import absolute_import
from flask import Flask
from flask import request
import logging
import datetime
import os
import tweepy
from google.cloud import datastore
import time
logging.basicConfig(level=logging.INFO)
app = Flask(__name__)
@app.route('/Main')
def hello():
"""A no-op."""
return 'nothing to see.'
@app.route('/my_service')
def get_service():
is_cron = request.headers.get('X-Appengine-Cron', False)
logging.info("is_cron is %s", is_cron)
# Comment out the following test to allow non cron-initiated requests.
if not is_cron:
return 'Blocked.'
## data scraping and saving in Datastore
return 'Done.'
@app.errorhandler(500)
def server_error(e):
logging.exception('An error occurred during a request.')
return """
An internal error occurred: <pre>{}
См. Журналы для полной трассировки стека."" ".format (e), 500 if __name__ == '__main__': app.run (host = '127.0.0.1', port = 8080, debug = True)
Тогда у меня естьdispatch.yaml
с такой структурой:
dispatch:
- url: "*/my_service*"
service: my_service
и cron.yaml
:
cron:
- description: run my service
url: /my_service
schedule: 1 of month 10:00
target: my_service
Не уверен, что я здесь не так делаю.
EDIT
Немного контекста. Это то, что я редактирую, начиная с этого репо .
Служба с именем backend
, которая определена втам работает отлично (у него также такое же расписание в задании cron, как у my_service
, но когда я запускаю его в день, отличный от того, в котором он запланирован, он работает просто отлично). Что я сделал, так это создал дополнительную службусо своим собственным файлом yaml, который выглядит точно так же, как beckend.yaml
, со своим собственным my_service.py
и добавлением его к dispacth.yaml
и cron.yaml
. Теоретически это должно работать, поскольку структура точно такая же,но это не так.
Этот сервис изначально разрабатывался в стандартной среде, и там он работал, проблема возникла, когда яПерешли на гибкую среду.
РЕДАКТИРОВАТЬ 2:
На самом деле проблема была в Dockerfile, который вызывал службу, которую я не использовал.