コード例 #1
0
def test_loguru():
    os.environ['LOGURU_LEVEL'] = "INFO"
    from loguru import logger

    logger.debug(f"调试 {datetime.datetime.now()}")
    logger.info(f"信息提示 {datetime.datetime.now()}")
    logger.warning(f"警告 =======  {datetime.datetime.now()}")
    logger.error(f"错误 !!!!!!  {datetime.datetime.now()}")
コード例 #2
0
def test_mylog():
    os.environ['HR_RUN_PROD'] = "y"
    os.environ['HR_LOG_FILE'] = "/tmp/logger-test.log"
    os.environ['HR_LOG_FILE_LEVEL'] = "ERROR"
    os.environ['HR_LOG_CONSOLE'] = "y"
    from feedwork.utils import logger

    logger.debug(f"调试 {datetime.datetime.now()}")
    logger.info(f"信息提示 {datetime.datetime.now()}")
    logger.warning(f"警告 =======  {datetime.datetime.now()}")
    logger.error(f"错误 !!!!!!  {datetime.datetime.now()}")
コード例 #3
0
    def __setup_connection(self):
        """
        创建数据库连接。当数据库连接无法构建时抛出RuntimeError异常。

        """
        # 当连接不为空时,意味着使用者通过构造器构造了连接,导致重复调用该方法,所以此处直接返回,不抛出异常
        if self.conn is not None:
            logger.trace(f"{self.id} reuse  autocommit={self.conn.autocommit}")
            return
        dbinfo = self.dbinfo
        try:
            start_time = time.time()
            if ConnWay.DIRECTLY.value == dbinfo.way:
                dsn = dbinfo.host + ":" + str(
                    dbinfo.port) + "/" + dbinfo.dbname
                self.conn = self.database_manager.create_connection(
                    dbinfo.host, dbinfo.port, dbinfo.dbname, dbinfo.username,
                    dbinfo.password, dsn)
                self.__conn_origin = self.conn
            elif ConnWay.POOL.value == dbinfo.way:
                from feedwork.database.init_database_pool import database_pool
                self.conn = database_pool[dbinfo.name].connection()
                # 连接池会对数据库连接进行封装,以下代码能拿到原始的数据库连接,从而能知道数据库连接的相关状态。该连接池没有提供状态查询接口
                # 因为存储的是对象引用,所以可以直接修改该变量,从而修改数据库连接对象
                self.__conn_origin = self.conn._con._con
            else:
                raise RuntimeError(
                    f"{dbinfo.way} connection way is not support!")

            self.cursor = self.conn.cursor()

            logger.info(
                f"{self.id} new connection by {dbinfo.way} {self.desc} autocommit  -> {dbinfo.autocommit}"
            )

            if dbinfo.show_conn_time:
                logger.info(
                    f"{self.id} database connection spend {time.time() - start_time}s"
                )

        except Exception as e:
            raise RuntimeError(
                f"{dbinfo.name} can not connect to database! {e}")

        if dbinfo.autocommit:
            self.database_manager.get_or_set_autocommit(
                self.__conn_origin, True)
        else:
            self.begin_transaction()

        logger.debug(f"{self.id} connection setup success")
コード例 #4
0
    def begin_transaction(self):
        """
        开启数据库连接的事务。当数据库连接已经关闭时抛出RuntimeError异常。

        """
        # conn.closed不反映服务器关闭/切断的连接。它仅表示客户端使用connection.close()关闭的连接
        if self.is_closed():
            raise RuntimeError(
                "The connection is closed before begin transaction!")
        if self.database_manager.get_or_set_autocommit(
                self.__conn_origin) is False:
            logger.debug("Already begin transaction")
            return

        self.database_manager.get_or_set_autocommit(self.__conn_origin, False)

        self.is_commited = False
コード例 #5
0
import os
import sys

import pytest
import datetime
from feedwork.utils import logger

logger.debug(f"调试 {datetime.datetime.now()}")
logger.info(f"信息提示 {datetime.datetime.now()}")
logger.error(f"错误 !!!!!!  {datetime.datetime.now()}")


@logger.catch
def func(x, y, z):
    return 1 / (x + y + z)


func(1, -1, 0)

if __name__ == "__main__":
    pytest.main(["-q", os.path.basename(sys.argv[0])])
コード例 #6
0
def file_list_indir(root_dir, index_mdfile):
    # root_dir目录下必须存在被检查的索引文件
    if not os.path.isfile(os.path.join(root_dir, index_mdfile)):
        logger.error(f"{index_mdfile} is not real file")
        return None

    file_list = []
    for cur_root_dir, sub_dirs, filenames in os.walk(root_dir):
        #    for file in glob.glob(f"{root_dir}/*"):
        for filename in filenames:
            if filename == index_mdfile:
                continue
            cur_file = os.path.join(cur_root_dir,
                                    filename)  # 每个文件名,都是 root_dir 开头的

            file_list.append(os.path.join(cur_root_dir, filename))
            logger.info(f"file={filename}")
    return file_list


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--dir', type=str, help="从该目录开始检查其索引文件的完整性")
    parser.add_argument('--idxfile', type=str, help="被检查的索引文件名")
    args = parser.parse_args()
    root_dir = args.dir
    index_mdfile = args.idxfile
    logger.debug(f"root_dir={root_dir}, index_mdfile={index_mdfile}")

    logger.debug(file_list_indir(root_dir, index_mdfile))