Я создал 1-минутный cron, затем использовал defer в коде движка приложения, чтобы вызвать другое сообщение pubsub
import logging
import webapp2
import time
import json
import pubsub_utils
from google.appengine.ext import ndb, deferred
def defer_post(item_key=None):
try:
logging.info('deferred pubsub')
pubsub_utils.publish_to_topic(item_key, str(time.time()))
except Exception as e:
logging.info('item_key: %s', item_key)
logging.exception(e)
class PushToPubSub(webapp2.RequestHandler):
def get(self, topic):
logging.info('cron pubsub: %s', topic)
pubsub_utils.publish_to_topic(topic, str(time.time()))
deferred.defer(defer_post, item_key=topic, _countdown=30)
self.response.headers['Content-Type'] = 'application/json'
self.response.write(json.dumps({"status": "200"}))
app = webapp2.WSGIApplication([
webapp2.Route(r'/publish/<topic>', handler=PushToPubSub)
], debug=True)