0
我想模仿常见CMS平台(如Wordpress或Drupal)的“已发布/未发布”功能。Google App Engine:使用cron过期(或“取消发布”)实体
所以我有这个工作(ndb.Model):
class Job(ndb.Model):
title = ndb.StringProperty()
published = ndb.StringProperty(default = "on")
created = ndb.DateTimeProperty(auto_now_add = True)
expire = ndb.DateTimeProperty()
的NewJob处理程序是这样的:
class NewJob(JobHandler):
def get(self):
self.render('new-job.html')
def post(self):
title = self.request.get('title')
published = "on"
expire = datetime.datetime.now() + datetime.timedelta(days = 30)
if title:
j = Job(
title = title,
published = published,
expire = expire,
created = created)
j.put()
self.redirect('/job/%s' % str(j.key.id()))
else:
self.redirect('/login')
而且保存实体看起来是这样的:
Job(key=Key('Job', 5910974510923776), created=datetime.datetime(2014, 1, 17, 19, 0, 52, 12379), expire=datetime.datetime(2014, 2, 17, 19, 1, 52, 12174), published=u'on', title=u'Sous Chef')
我打算做的是将所有Job
实体设置为'publish =='off'',当它们的expire
时间是今天(现在)
所以我成立了一个任务在cron.yaml
cron:
- description: expire job entities after 30 days
url: /cron/job-expire
schedule: every day 00:00
...和/cron/job-expire
URL被处理:
class CronJobExpire(BaseHandler):
def get(self):
jobs = Job.query(Job.published == "on").fetch()
now = datetime.datetime.now()
for job in jobs:
if job.expire < now or job.expire == now:
job.published = "off"
的上述CronJobExpire
处理程序的目标是:
检查当前为published == "on"
的作业实体列表,然后 检查他们的expire
日期是'now
'还是'< now
',如果是,请设置published == "off"
。
这不起作用。我正在关注文档。任何帮助将不胜感激 - 谢谢。
傻了。感谢您提供更多建议。 – puoyaahhh