def handle(self, *args, **options): print "in process" redis_conn.flushdb() for article in Article.objects.only("id").filter(primary=True): redis_conn.sadd(Article.ALL_PRIMARY_IDS_KEY, article.id) ## to add user read article id list; print "done"
def defer_process(self): from readability.readability import Document import urllib article = self.article if not article.finished: header = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0',} response = requests.get(article.original_url, headers=header, verify=False) response.encoding = chardet.detect(response.content)["encoding"] html = response.text article.content = Document(html).summary() article.title = Document(html).short_title() article.primary = True # TODO article.finished = True redis_conn.sadd(Article.ALL_PRIMARY_IDS_KEY, article.id) article.save() q.enqueue(article._catch_image)
def defer_process(self): from readability.readability import Document import urllib article = self.article if not article.finished: header = { 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0', } response = requests.get(article.original_url, headers=header, verify=False) response.encoding = chardet.detect(response.content)["encoding"] html = response.text article.content = Document(html).summary() article.title = Document(html).short_title() article.primary = True # TODO article.finished = True redis_conn.sadd(Article.ALL_PRIMARY_IDS_KEY, article.id) article.save() q.enqueue(article._catch_image)
def random_article(request): ''' put all primary article id to the redis redis[all] = set(1,2,3) put all user read in redis redis[user] = set(1,2, 3) consider use sdiff: r.sdiff(keys=('local', 'mythtv')) ''' # use request.user # if we need to collect anonymous user data if request.user.is_authenticated(): article_id_sets = redis_conn.sdiff((Article.ALL_PRIMARY_IDS_KEY, request.user.id)) or 0 if article_id_sets == 0: raise Http404 article_id = random.sample(article_id_sets, 1)[0] redis_conn.sadd(request.user.id, article_id) UserReadArticle.objects.get_or_create(user=request.user, article_id=article_id) else: article_id = redis_conn.srandmember(Article.ALL_PRIMARY_IDS_KEY) or 0 return redirect("/api/article/%s/"%article_id)