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
|
||||
|
||||
# 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):
|
||||
|
||||
+17
-5
@@ -1,15 +1,27 @@
|
||||
from flask import Flask
|
||||
|
||||
from entrance import config
|
||||
import os
|
||||
from common.extend.logger import config_logger
|
||||
from entrance.bps import sys, register_parent_bp
|
||||
|
||||
|
||||
from entrance.extensions import init_extensions
|
||||
|
||||
|
||||
def create_app():
|
||||
config_logger()
|
||||
app = Flask(__name__)
|
||||
app.config.from_pyfile('config.py')
|
||||
app.config.from_pyfile('config/config.py')
|
||||
register_parent_bp(app)
|
||||
init_extensions(app)
|
||||
if os.environ.get('WERKZEUG_RUN_MAIN') == 'true':
|
||||
print(
|
||||
"""
|
||||
|
||||
___ _ _ _ ___ _ _
|
||||
| _ \___ __ _ _ _ /_\ __| |_ __ (_)_ _ | __| |__ _ __| |__
|
||||
| _/ -_) _` | '_| / _ \/ _` | ' \| | ' \ | _|| / _` (_-< / /
|
||||
|_| \___\__,_|_| /_/ \_\__,_|_|_|_|_|_||_| |_| |_\__,_/__/_\_\\
|
||||
|
||||
|
||||
"""
|
||||
)
|
||||
|
||||
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 entrance.extend.orm import db
|
||||
from entrance.extend.migrate import migrate
|
||||
from common.extend.celery import register_celery
|
||||
from common.extend.limit import limiter
|
||||
from common.extend.orm import db
|
||||
from common.extend.migrate import migrate
|
||||
|
||||
|
||||
def init_extensions(app: Flask):
|
||||
db.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
|
||||
marshmallow-sqlalchemy==0.27.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