示例#1
0
from flask import Flask, render_template, request, url_for, session, g
from flask.json import jsonify
from flask_login import LoginManager, login_user, login_required, logout_user
from flask_debugtoolbar import DebugToolbarExtension
from werkzeug.utils import redirect

from wsgi.db import Storage
from wsgi.engine import reddit_get_new, reddit_search, Retriever
from wsgi.processes import SubredditProcessWorker, SubredditUpdater, PostUpdater, update_stored_posts
from wsgi.properties import SRC_SEARCH, SRC_OBSERV, logger, default_time_min, test_mode
from wsgi.wake_up import WakeUp, WakeUpStorage

__author__ = '4ikist'

log = logger.getChild("web")

cur_dir = os.path.dirname(__file__)
app = Flask("rr",
            template_folder=cur_dir + "/templates",
            static_folder=cur_dir + "/static")

app.secret_key = 'fooooooo'
app.config['SESSION_TYPE'] = 'filesystem'

if os.environ.get("test", False):
    log.info("will run at test mode")
    app.config["SECRET_KEY"] = "foooo"
    app.debug = True
    app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = False
    toolbar = DebugToolbarExtension(app)
示例#2
0
from datetime import datetime
import hashlib

import time

import pymongo

from pymongo import MongoClient
from wsgi import get_interested_fields
from wsgi.properties import SRC_SEARCH, min_time_step, min_update_period, logger, mongo_uri, mongo_db_name

__author__ = 'alesha'

log = logger.getChild("DB")


class StatisticsCache(object):
    def __init__(self):
        self.last_update = time.time()
        self.data = {}


class DBHandler(object):
    def __init__(self, name="?", uri=mongo_uri, db_name=mongo_db_name):
        log.info("start db handler for [%s] %s" % (name, uri))
        self.client = MongoClient(host=uri, maxPoolSize=10, connect=False)
        self.db = self.client[db_name]
        self.collection_names = self.db.collection_names(include_system_collections=False)


class Storage(object):
示例#3
0
# coding=utf-8
from multiprocessing import Process
from time import sleep
from db import Storage
from engine import Retriever, reddit_get_new, get_current_step, to_save, update_posts
from wsgi.properties import min_update_period, min_time_step, max_time_step, logger

__author__ = 'alesha'

log = logger.getChild("process")


class SubredditProcessWorker(Process):
    def __init__(self, tq, rq, db):
        super(SubredditProcessWorker, self).__init__()
        self.tq = tq
        self.rq = rq
        self.db = db

        log.info("SPW inited...")

    def run(self):
        log.info("SPW will start...")
        while 1:
            task = self.tq.get()
            name = task.get("name")
            try:
                self.db.update_subreddit_info(name, {"error": "All ok"})
                subreddit = self.db.get_subreddit(name)
                if not subreddit:
                    log.error("not subreddit of this name %s", name)
示例#4
0
from flask import Flask, render_template, request, url_for, session, g
from flask.json import jsonify
from flask_login import LoginManager, login_user, login_required, logout_user
from flask_debugtoolbar import DebugToolbarExtension
from werkzeug.utils import redirect

from wsgi.db import Storage
from wsgi.engine import reddit_get_new, reddit_search, Retriever
from wsgi.processes import SubredditProcessWorker, SubredditUpdater, PostUpdater, update_stored_posts
from wsgi.properties import SRC_SEARCH, SRC_OBSERV, logger, default_time_min, test_mode
from wsgi.wake_up import WakeUp, WakeUpStorage

__author__ = '4ikist'

log = logger.getChild("web")

cur_dir = os.path.dirname(__file__)
app = Flask("rr", template_folder=cur_dir + "/templates", static_folder=cur_dir + "/static")

app.secret_key = 'fooooooo'
app.config['SESSION_TYPE'] = 'filesystem'

if os.environ.get("test", False):
    log.info("will run at test mode")
    app.config["SECRET_KEY"] = "foooo"
    app.debug = True
    app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = False
    toolbar = DebugToolbarExtension(app)

login_manager = LoginManager()
示例#5
0
# coding=utf-8
from multiprocessing import Process
from time import sleep
from db import Storage
from engine import Retriever, reddit_get_new, get_current_step, to_save, update_posts
from wsgi.properties import min_update_period, min_time_step, max_time_step, logger

__author__ = 'alesha'

log = logger.getChild("process")


class SubredditProcessWorker(Process):
    def __init__(self, tq, rq, db):
        super(SubredditProcessWorker, self).__init__()
        self.tq = tq
        self.rq = rq
        self.db = db

        log.info("SPW inited...")

    def run(self):
        log.info("SPW will start...")
        while 1:
            task = self.tq.get()
            name = task.get("name")
            try:
                self.db.update_subreddit_info(name, {"error": "All ok"})
                subreddit = self.db.get_subreddit(name)
                if not subreddit:
                    log.error("not subreddit of this name %s", name)