Exemplo n.º 1
0
    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]
Exemplo n.º 2
0
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('---')
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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('---')
Exemplo n.º 8
0
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服务写到一起,后面在拆分