def create_need_abs_filename(): AgbotConfig._log_abs_filename = \ fff.get_abs_filename_with_sub_path('log', 'agbot.log')[1] AgbotConfig._conf_ini_abs_filename = \ fff.get_abs_filename_with_sub_path('conf', 'agbot_conf.ini')[1] AgbotConfig._conf_json_abs_filename = \ fff.get_abs_filename_with_sub_path('conf', 'agbot_conf.json')[1]
def demo_common_md5(): print('--- md5 demo ---') print('string md5:', GetMD5.string('hello world!')) print( 'file md5:', GetMD5.file( get_abs_filename_with_sub_path('conf', 'test_conf.ini')[1])) print( 'big file md5:', GetMD5.big_file( get_abs_filename_with_sub_path('conf', 'test_conf.ini')[1])) print('---')
def task_context_processor(vertical_ctx: VerticalContext): result_mail_receiver_text = vertical_ctx.task_context.task_model.pass_through.get( 'result_mail_receiver') if not is_not_blank(result_mail_receiver_text): return task_context_processor_excel(vertical_ctx) result_mail_receiver = result_mail_receiver_text.split(',') sys_mail_conf = vertical_ctx.sys_conf_dict['system']['ext'][ 'context_processor_mail'] msg = MIMEMultipart('related') mail_matter = """ <p>Agbot 执行结果</p> <p>task_id: {}</p> <p>task_src: {}</p> <p>{}</p> """.format(vertical_ctx.task_context.task_model.id, vertical_ctx.task_context.task_model.task_src, vertical_ctx.task_context.status.value) matter = MIMEText(mail_matter, 'html', 'utf-8') msg.attach(matter) csv_filename = vertical_ctx.sys_conf_dict.get('excel_context_file_name', '{task_id}_result.xlsx') \ .format(task_id=vertical_ctx.task_context.task_model.id) csv_file_path = fish_file.get_abs_filename_with_sub_path( 'result', csv_filename)[1] attachfile = MIMEBase('applocation', 'octet-stream') # 创建对象指定主要类型和次要类型 attachfile.set_payload(open(csv_file_path, 'rb').read()) # 将消息内容设置为有效载荷 attachfile.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', csv_filename)) # 扩展标题设置 encoders.encode_base64(attachfile) msg.attach(attachfile) # 附加对象加入到msg msg['From'] = 'agbot' # 发送者 msg['To'] = ','.join(result_mail_receiver) # 接收者 msg['Subject'] = 'agbot task result {}'.format( vertical_ctx.task_context.task_model.id) try: with smtplib.SMTP(host=sys_mail_conf['server']['host'], port=sys_mail_conf['server']['port']) as server: server.login(sys_mail_conf['server']['username'], sys_mail_conf['server']['password']) server.sendmail('agbot', result_mail_receiver, msg.as_string()) server.quit() logger.info('result mail send success: {} {}'.format( vertical_ctx.task_context.task_model.id, ','.join(result_mail_receiver))) except Exception as e: logger.error('result mail send failure:{} {}'.format( vertical_ctx.task_context.task_model.id, str(e))) finally: if vertical_ctx.sys_conf_dict['system']['ext'][ 'context_processor_excel'].get('enabled') != True: os.remove(csv_file_path)
def _get_sqlite_uri(db_name): """ 生成 sqlite 数据库的 uri 字符串 :param db_name: 数据库名称 :return: db url """ db_sqlite_uri = 'sqlite:///' + fff.get_abs_filename_with_sub_path( 'db', db_name)[1] return db_sqlite_uri
def get_db_sqlite_uri(db_name): # 获得操作系统简称 # platform = ffc.check_platform() # python 3.5 之后 uri 均为 //// , windows 和 nix 系统没有差异 db_sqlite_uri = 'sqlite:///' + \ fff.get_abs_filename_with_sub_path('db', db_name)[1] # db_sqlite_uri = ''.join(['sqlite:///', os.path.join(basedir, 'db', db_name)]) return db_sqlite_uri
def get_db_sqlite_uri(db_name, db_path=Config.CURRENT_PATH): """ 获取 sqlite 地址 :param: * db_name(str): 数据库名称 :return: * db_sqlite_uri(str): sqlite 链接地址 """ db_sqlite_uri = 'sqlite:///' + fff.get_abs_filename_with_sub_path(db_path, db_name)[1] return db_sqlite_uri
def demo_common_md5(): print('--- md5 demo ---') print('string md5:', GetMD5.string('hello world!')) print('file md5:', GetMD5.file(get_abs_filename_with_sub_path('conf', 'test_conf.ini')[1])) print('big file md5:', GetMD5.big_file(get_abs_filename_with_sub_path('conf', 'test_conf.ini')[1])) print('---')
from fastapi import FastAPI, Request from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse from fishbase.fish_file import get_abs_filename_with_sub_path from fishbase.fish_logger import set_log_file from apis.v1.api import api_v1_router from starlette.middleware.sessions import SessionMiddleware from fastapi.staticfiles import StaticFiles import uvicorn import settings from consts import CustomErr # 配置logger log_abs_filename = get_abs_filename_with_sub_path('logs', 'ele.log')[1] set_log_file(log_abs_filename) # Debug 文档 if settings.SERVER_DEBUG: docs_url = '/docs' redoc_url = '/redoc' else: docs_url = None redoc_url = None def register_router(app: FastAPI): """ 注册路由 这里暂时把两个API服务写到一起,后面在拆分