flask factory

https://gist.github.com/zaccrites/c5bcf96ed90907d92042
import jinja2
from flask import Flask, render_template, request, redirect, url_for
from flask.ext.sqlalchemy import SQLAlchemy

from . import formatting
from .config import get_config


db = SQLAlchemy()


def create_app(config_name):
    app = Flask(__name__)
    config = get_config(config_name)
    app.config.from_object(config)

    config.init_app(app)
    db.init_app(app)

    register_pre_request_handlers(app)
    register_post_request_handlers(app)

    set_error_handlers(app)
    setup_logging(app)
    register_blueprints(app)

    app.jinja_env.undefined = jinja2.StrictUndefined
    setup_jinja_filters(app)

    return app


def register_blueprints(app):
    from . import general
    from . import auth

    app.register_blueprint(general.mod)
    app.register_blueprint(auth.mod)


def set_error_handlers(app):
    @app.errorhandler(404)
    def not_found(error):
        return render_template('errors/not_found.html'), 404

    @app.errorhandler(403)
    def forbidden(error):
        return render_template('errors/forbidden.html'), 403


def register_pre_request_handlers(app):
    pass


def register_post_request_handlers(app):
    pass


def setup_jinja_filters(app):
    app.jinja_env.filters['format_datetime'] = formatting.format_datetime


def setup_logging(app):
    if not app.debug:
        import logging
        from logging.handlers import RotatingFileHandler
        handler = RotatingFileHandler('jmickey-blog.log', maxBytes=10000, backupCount=1)
        handler.setLevel(logging.INFO)
        app.logger.addHandler(handler)
import pytest
from jmickey_blog.app import create_app, db

# import relevant models here

@pytest.fixture
def test_app():
    app = create_app('test')
    with app.app_context():
        db.drop_all()
        db.create_all()
    return app
    

def test_some_thing():
    pass


def test_some_other_thing():
    pass
#!/usr/bin/env python3

import sys
from jmickey_blog.app import create_app

if len(sys.argv) > 1:
    config_name = sys.argv[1]
else:
    config_name = 'development'

app = create_app(config_name)


def main():
    app.run()

if __name__ == '__main__':
   main()
https://gist.github.com/Leo-G/99dd3e1147498daade61
#!/usr/bin/env python
from flask import Flask


#http://flask.pocoo.org/docs/0.10/patterns/appfactories/
def create_app(config_filename):
    app = Flask(__name__)
    app.config.from_pyfile(config_filename)

    from app.users.models import db
    db.init_app(app)

    #Blueprints
    from app.users.views import users
    app.register_blueprint(users)

    return app


app = create_app('config.py')
app.secret_key = 'some_secret'
app.debug = True
app.run
https://gist.github.com/alexanderjulo/913beb668a4f25471f2e
from flask import Flask
from celery import Celery


def create_app():
    app = Flask(__name__)

    TaskBase = celery.Task

    class Task(TaskBase):
        """
            The usual celery base `Task` does not offer any integration into
            flask, which is why we need this modified class. As the modified
            class is dependent on the app, it can not just be subclassed,
            but has to be dynamically created which is being taken care of
            here.
        """
        abstract = True

        def __call__(self, *args, **kwargs):
            # FIXME: actually we only need app context, but flask-babel
            # is broken and needs a request context
            with app.test_request_context("/"):
                return TaskBase.__call__(self, *args, **kwargs)

    celery.Task = Task
    celery.conf.update(app.config)
    if app.config.get('CELERY_BROKER_URL'):
        celery.conf['BROKER_URL'] = app.config['CELERY_BROKER_URL']
https://gist.github.com/nejdetckenobi/6c6446b7337da9d71f4ea0580f1343c3
#!/usr/bin/env python

from __future__ import print_function

import os
import tempfile
import time

import flask
import psutil
import werkzeug

from saveserver import current_milli_time, intWithCommas, measure_spent_time

app = flask.Flask(__name__)

@app.route('/', defaults={'path': ''}, methods = ['POST'])
@app.route('/<path:path>', methods = ['POST'])
def hello(path):
    app.logger.info('new request')
    def custom_stream_factory(total_content_length, filename, content_type, content_length=None):
        tmpfile = tempfile.NamedTemporaryFile('wb+', prefix='flaskapp')
        app.logger.info("start receiving file ... filename => " + str(tmpfile.name))
        return tmpfile
    ms = measure_spent_time()
    
    stream,form,files = werkzeug.formparser.parse_form_data(flask.request.environ, stream_factory=custom_stream_factory)
    total_size = 0
    
    for fil in files.values():
        app.logger.info(" ".join(["saved form name", fil.name, "submitted as", fil.filename, "to temporary file", fil.stream.name]))
        total_size += os.path.getsize(fil.stream.name)
    mb_per_s = "%.1f" % ((total_size / (1024.0*1024.0)) / ((1.0+ms(raw=True))/1000.0))
    app.logger.info(" ".join([str(x) for x in ["handling POST request, spent", ms(), "ms.", mb_per_s, "MB/s.", "Number of files:", len(files.values())]]))
    process = psutil.Process(os.getpid())
    app.logger.info("memory usage: %.1f MiB" % (process.memory_info().rss / (1024.0*1024.0)))

    return "Hello World!"

if __name__ == "__main__":
    app.run(port=8090)
https://gist.github.com/Kevinstronger/9088662
from flask import Flask, jsonify, g, request
from sqlite3 import dbapi2 as sqlite3
DATABASE = './db/test.db'
app = Flask(__name__)
 
def get_db():
    db = getattr(g, '_database', None)
    if db is None:
        db = g._database = sqlite3.connect(DATABASE)
        db.row_factory = sqlite3.Row
    return db
 
@app.teardown_appcontext
def close_connection(exception):
    db = getattr(g, '_database', None)
    if db is not None: db.close()
 
def query_db(query, args=(), one=False):
    cur = get_db().execute(query, args)
    rv = cur.fetchall()
    cur.close()
    return (rv[0] if rv else None) if one else rv
 
def init_db():
    with app.app_context():
        db = get_db()
        with app.open_resource('schema.sql', mode='r') as f:
            db.cursor().executescript(f.read())
        db.commit()
 
def add_student(name='test', age=10, sex='male'):
    sql = "INSERT INTO students (name, sex, age) VALUES('%s', '%s', %d)" %(name, sex, int(age))
    print sql
    db = get_db()
    db.execute(sql)
    res = db.commit()
    return res
 
def find_student(name=''):
    sql = "select * from students where name = '%s' limit 1" %(name)
    print sql
    db = get_db()
    rv = db.execute(sql)
    res = rv.fetchall()
    rv.close()
    return res[0]
 
 
@app.route('/')
def users():
    return jsonify(hello='world')
 
@app.route('/add',methods=['POST'])
def add_user():
    print add_student(name=request.form['name'], age=request.form['age'], sex=request.form['sex'])
    return ''
 
@app.route('/find_user')
def find_user_by_name():
    name = request.args.get('name', '')
    student = find_student(name)
    return jsonify(name=student['name'], age=student['age'], sex=student['sex'])
 
if __name__ == '__main__' : app.run(debug=True)
posted on 2018-03-22 10:57 北京涛子 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/liujitao79/p/8622251.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值