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)
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):
# 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)
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()