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()
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()