def run(self): import time from v2ex.service.fetcher_manager import FetcherManager while not self._stop_flag: time.sleep(1) nid = FetcherManager.get_task() ntf_token = NtfTokenDao.get_from_nid(nid) if ntf_token is None: FetcherManager.remove_task(nid) continue if self.should_check_update(ntf_token): if self.has_update(ntf_token): logging.debug("found update for %s", ntf_token.token) self.gcm_send(ntf_token.uid, gcm.send_notify) else: logging.debug("not found update for %s", ntf_token.token) ntf_token.last_fetch_time = func.now() db.get_session().commit() elif self.should_ping(ntf_token): self.gcm_send(ntf_token.uid, gcm.send_ping) ntf_token.last_ping_time = func.now() db.get_session().commit()
def post(self, username): user = UserDao.get_from_username(username) if user is None: self.send_error(400) return action = self.get_body_argument("action") if action == "set_ntf_token": token = self.get_body_argument("token") nid = NtfTokenDao.set_for_user(user.id, token) FetcherManager.add_task(nid) elif action == "add_gcm_token": token = self.get_body_argument("token") GcmTokenDao.add_gcm_token(user.id, token) elif action == "del_gcm_token": token = self.get_body_argument("token") GcmTokenDao.del_gcm_token(user.id, token) self.set_status(200)
def start_worker(): from v2ex.service.fetcher_manager import FetcherManager fetcher_manager = FetcherManager() fetcher_manager.start()