Beispiel #1
0
    def send_mail(self, enable_mock=False) -> bool:
        from happy_python import HappyLog
        import smtplib
        from email.mime.text import MIMEText
        from email.header import Header
        from email.utils import formataddr

        hlog = HappyLog.get_instance()
        client = None

        # noinspection PyBroadException
        try:
            stmp_host, stmp_port = self.stmp_server
            stmp_user, stmp_pwd = self.stmp_auth

            body = MIMEText(self.body, 'plain', 'utf-8')

            to_str = ''
            recipients = []

            for email_addr_obj in self.recipients:
                to_str += formataddr(email_addr_obj.to_tuple()) + ','
                recipients.append(email_addr_obj.addr)

            to_str = to_str[:-1]

            body['to'] = to_str
            body['from'] = formataddr(self.sender.to_tuple())
            body['subject'] = Header(self.subject, 'utf-8')

            client = smtplib.SMTP_SSL(stmp_host, stmp_port) if self.use_tls else smtplib.SMTP(stmp_host, stmp_port)

            if self.enable_debug:
                client.set_debuglevel(1)

            client.login(stmp_user, stmp_pwd)
            client.sendmail(self.sender.addr, recipients, body.as_string())
            client.quit()

            hlog.info('发送邮件成功')
            return True
        except Exception as e:
            client.close()

            if not enable_mock:
                hlog.error('发送邮件失败')
                hlog.error(e)

            # 如果有测试标记,则返回True
            return True if enable_mock else False
    def read_cfg(self):
        """
        读取配置文件内容
        :return:
        """
        hlog = HappyLog.get_instance()
        hlog.info('加载SPPM配置文件:%s' % self.env_file_path)

        with open(self.env_file_path, 'r') as f:
            lines = f.readlines()

            for line in lines:
                line = line.strip()

                if not line:
                    raise ValueError('内容无法识别:%s' % line)

                sep = '='
                index = line.find(sep)

                if index == -1:
                    raise ValueError('内容无法识别:%s' % line)

                key = line[:index]
                value = line[index + len(sep):]

                if key == 'timeout':
                    # 如果value不是整数,会抛出异常提示用户
                    timeout = int(value)

                    if timeout < 0:
                        raise ValueError('参数 timeout 的值不能小于 0' % value)
                else:
                    if not os.path.isabs(value):
                        raise ValueError('仅支持绝对路径:%s' % value)

                self.configs[key] = value
 def setUp(self):
     log_ini = PurePath(
         os.path.dirname(__file__)).parent / 'configs' / 'log.ini'
     self.hlog = HappyLog.get_instance(log_ini)
     self.logger = self.hlog.get_logger()
Beispiel #4
0
from pathlib import PurePath

from happy_python import HappyLog, is_ascii_str

DOMAIN_NAME_MAX_SIZE = 253

# 字段最大长度
FEILD_MAX_SIZE = 63

# 顶级域最小长度(点+两个字母)
TLD_MIN_SIZE = 3

# 域名分隔符
DOMAIN_SEPARATOR = '.'

hlog = HappyLog.get_instance()

# 顶级域列表
TLDs = []


def _top_level_domain_feild_builder(feild: str) -> str:
    assert bool(feild)
    return DOMAIN_SEPARATOR + feild


def _load_tlds_db() -> None:
    """
    从指定顶级域数据文件载入顶级域数据
    :return:
    """
from pathlib import PurePath
from happy_python import HappyConfigParser
from happy_python import HappyLog
from config import ApiConfig, MqConfig

# 配置文件位置
CONFIG_DIR = PurePath(__file__).parent / 'configs'
CONFIG_FILENAME = str(CONFIG_DIR / 'common.ini')
LOG_CONFIG_FILENAME = str(CONFIG_DIR / 'log.ini')

# 加载api配置
api_config = ApiConfig()
HappyConfigParser.load(CONFIG_FILENAME, api_config)

# 加载mq配置
mq_config = MqConfig()
HappyConfigParser.load(CONFIG_FILENAME, mq_config)

# 加载log配置
hlog = HappyLog.get_instance(LOG_CONFIG_FILENAME)

# 爬取网页的间隔时间
delay = 3

# 网页域名到网站名字的映射
PLATFORM_MAP = {
    "zhipin": "boss直聘",
    "51job": "前程无忧",
    "lagou": "拉勾",
    "zhaopin": "智联招聘"
}
 def setUp(self):
     self.hlog = HappyLog.get_instance()
     self.logger = self.hlog.get_logger()
#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import signal
from pathlib import PurePath

from happy_python import HappyLog

from sppm.sppm_config import SppmConfig

CONFIG_DIR = PurePath(__file__).parents[1] / 'conf'
LOG_CONF_FILE = str(CONFIG_DIR / 'log.ini')
hlog = HappyLog.get_instance(LOG_CONF_FILE)

signals = {signal.SIGINT: False, signal.SIGHUP: False, signal.SIGTERM: False}

SPPM_CONFIG = SppmConfig.get_instance()