celery,logger,limiter,cache,logo
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
from cachelib import RedisCache
|
||||||
|
|
||||||
|
cache = RedisCache()
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
from celery import Celery
|
||||||
|
|
||||||
|
from entrance.config import celery as config
|
||||||
|
from entrance.config.celery import broker_url
|
||||||
|
|
||||||
|
celery = Celery(__name__, broker=broker_url)
|
||||||
|
|
||||||
|
|
||||||
|
def register_celery(app):
|
||||||
|
celery.config_from_object(config)
|
||||||
|
|
||||||
|
class ContextTask(celery.Task):
|
||||||
|
def __call__(self, *args, **kwargs):
|
||||||
|
with app.app_context():
|
||||||
|
return self.run(*args, **kwargs)
|
||||||
|
|
||||||
|
celery.Task = ContextTask
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
from flask_limiter import Limiter
|
||||||
|
from flask_limiter.util import get_remote_address
|
||||||
|
|
||||||
|
limiter = Limiter(
|
||||||
|
key_func=get_remote_address,
|
||||||
|
default_limits=["200 per day", "50 per hour"]
|
||||||
|
)
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
from logging.config import dictConfig
|
||||||
|
|
||||||
|
|
||||||
|
def config_logger():
|
||||||
|
dictConfig(
|
||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"disable_existing_loggers": False,
|
||||||
|
"formatters": {
|
||||||
|
"simple": {"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"}
|
||||||
|
},
|
||||||
|
"handlers": {
|
||||||
|
"console": {
|
||||||
|
"class": "logging.StreamHandler",
|
||||||
|
"level": "DEBUG",
|
||||||
|
"formatter": "simple",
|
||||||
|
"stream": "ext://sys.stdout",
|
||||||
|
},
|
||||||
|
"info_file_handler": {
|
||||||
|
"class": "logging.handlers.RotatingFileHandler",
|
||||||
|
"level": "INFO",
|
||||||
|
"formatter": "simple",
|
||||||
|
"filename": "logs/info.log",
|
||||||
|
"maxBytes": 10485760,
|
||||||
|
"backupCount": 50,
|
||||||
|
"encoding": "utf8",
|
||||||
|
},
|
||||||
|
"error_file_handler": {
|
||||||
|
"class": "logging.handlers.RotatingFileHandler",
|
||||||
|
"level": "ERROR",
|
||||||
|
"formatter": "simple",
|
||||||
|
"filename": "logs/errors.log",
|
||||||
|
"maxBytes": 10485760,
|
||||||
|
"backupCount": 20,
|
||||||
|
"encoding": "utf8",
|
||||||
|
},
|
||||||
|
"debug_file_handler": {
|
||||||
|
"class": "logging.handlers.RotatingFileHandler",
|
||||||
|
"level": "DEBUG",
|
||||||
|
"formatter": "simple",
|
||||||
|
"filename": "logs/debug.log",
|
||||||
|
"maxBytes": 10485760,
|
||||||
|
"backupCount": 50,
|
||||||
|
"encoding": "utf8",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"loggers": {
|
||||||
|
"my_module": {"level": "ERROR", "handlers": ["console"], "propagate": "no"}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"level": "DEBUG",
|
||||||
|
"handlers": ["error_file_handler", "debug_file_handler"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
from flask_migrate import Migrate
|
||||||
|
|
||||||
|
from common.extend.orm import db
|
||||||
|
# from entrance.models import model_lists
|
||||||
|
|
||||||
|
migrate = Migrate(db=db, directory='entrance/migrations')
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
from flask_mail import Message
|
from flask_mail import Message
|
||||||
|
|
||||||
# send_mail(subject='title', recipients=['123@qq.com'], content='body')
|
# send_mail(subject='title', recipients=['123@qq.com'], content='body')
|
||||||
from entrance.extend.mail import mail
|
from common.extend.mail import mail
|
||||||
|
|
||||||
|
|
||||||
def send_mail(subject, recipients, content):
|
def send_mail(subject, recipients, content):
|
||||||
|
|||||||
+17
-5
@@ -1,15 +1,27 @@
|
|||||||
from flask import Flask
|
from flask import Flask
|
||||||
|
import os
|
||||||
from entrance import config
|
from common.extend.logger import config_logger
|
||||||
from entrance.bps import sys, register_parent_bp
|
from entrance.bps import sys, register_parent_bp
|
||||||
|
|
||||||
|
|
||||||
from entrance.extensions import init_extensions
|
from entrance.extensions import init_extensions
|
||||||
|
|
||||||
|
|
||||||
def create_app():
|
def create_app():
|
||||||
|
config_logger()
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.config.from_pyfile('config.py')
|
app.config.from_pyfile('config/config.py')
|
||||||
register_parent_bp(app)
|
register_parent_bp(app)
|
||||||
init_extensions(app)
|
init_extensions(app)
|
||||||
|
if os.environ.get('WERKZEUG_RUN_MAIN') == 'true':
|
||||||
|
print(
|
||||||
|
"""
|
||||||
|
|
||||||
|
___ _ _ _ ___ _ _
|
||||||
|
| _ \___ __ _ _ _ /_\ __| |_ __ (_)_ _ | __| |__ _ __| |__
|
||||||
|
| _/ -_) _` | '_| / _ \/ _` | ' \| | ' \ | _|| / _` (_-< / /
|
||||||
|
|_| \___\__,_|_| /_/ \_\__,_|_|_|_|_|_||_| |_| |_\__,_/__/_\_\\
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
broker_url = 'redis://127.0.0.1:6379/1'
|
||||||
|
result_backend = 'rpc://'
|
||||||
|
|
||||||
|
task_serializer = 'json'
|
||||||
|
result_serializer = 'json'
|
||||||
|
accept_content = ['json']
|
||||||
|
timezone = 'Asia/Shanghai'
|
||||||
|
enable_utc = True
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
from flask_migrate import Migrate
|
|
||||||
|
|
||||||
from entrance.extend.orm import db
|
|
||||||
# from entrance.models import model_lists
|
|
||||||
from modules.sys.models.user_role import user_role
|
|
||||||
from modules.sys.models.role_power import role_power
|
|
||||||
from modules.sys.models.dict import DictType, DictData
|
|
||||||
from modules.sys.models.admin_log import AdminLog
|
|
||||||
from modules.sys.models.photo import Photo
|
|
||||||
from modules.sys.models.power import Power
|
|
||||||
from modules.sys.models.role import Role
|
|
||||||
from modules.sys.models.dept import Dept
|
|
||||||
|
|
||||||
from modules.sys.models.user import User
|
|
||||||
|
|
||||||
migrate = Migrate(db=db, directory='entrance/migrations')
|
|
||||||
|
|
||||||
@@ -1,9 +1,13 @@
|
|||||||
from flask import Flask
|
from flask import Flask
|
||||||
|
|
||||||
from entrance.extend.orm import db
|
from common.extend.celery import register_celery
|
||||||
from entrance.extend.migrate import migrate
|
from common.extend.limit import limiter
|
||||||
|
from common.extend.orm import db
|
||||||
|
from common.extend.migrate import migrate
|
||||||
|
|
||||||
|
|
||||||
def init_extensions(app: Flask):
|
def init_extensions(app: Flask):
|
||||||
db.init_app(app)
|
db.init_app(app)
|
||||||
migrate.init_app(app)
|
migrate.init_app(app)
|
||||||
|
register_celery(app)
|
||||||
|
limiter.init_app(app)
|
||||||
|
|||||||
+2
-1
@@ -1 +1,2 @@
|
|||||||
Flask-Mail==0.9.1
|
Flask-Mail==0.9.1
|
||||||
|
celery==5.2.3
|
||||||
+3
-1
@@ -6,4 +6,6 @@ Flask-Migrate==3.1.0
|
|||||||
flask-marshmallow==0.14.0
|
flask-marshmallow==0.14.0
|
||||||
marshmallow-sqlalchemy==0.27.0
|
marshmallow-sqlalchemy==0.27.0
|
||||||
Flask-Login==0.5.0
|
Flask-Login==0.5.0
|
||||||
Pillow==9.0.0
|
Pillow==9.0.0
|
||||||
|
flask-limiter-2.1
|
||||||
|
cachelib-0.6.0
|
||||||
Reference in New Issue
Block a user