저는 Wordpress 나 Drupal과 같은 일반적인 CMS 플랫폼의 'published/unpublished'기능을 모방하고 싶습니다.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
엔티티를 '게시 == "꺼짐"으로 설정하는 것입니다.시간 그래서 나는 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
'인지 확인하고,이 값이 True이면 published == "off"
을 설정하십시오.
이것은 작동하지 않습니다. 나는 문서를 따라 가고있다. 어떤 도움을 주시면 감사하겠습니다 - 감사합니다.
now = datetime.datetime.now()
jobs = Job.query(Job.published == "on", Job.expire <= now).fetch()
for job in jobs:
job.published = "off"
job.put()
또는 API 호출을 줄이고, 따라서 속도를 개선하기 위해 :, 난 단지 만료 된 작업을 가져 오는 것이 좋습니다 또한
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:
job.published = "off"
job.put()
:
어리석은 나를. 추가 제안 해 주셔서 감사합니다. – puoyaahhh