예제 #1
0
    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()
예제 #2
0
파일: api.py 프로젝트: CzBiX/v2ex-server
    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)
예제 #3
0
파일: run.py 프로젝트: CzBiX/v2ex-server
def start_worker():
    from v2ex.service.fetcher_manager import FetcherManager

    fetcher_manager = FetcherManager()
    fetcher_manager.start()