首页 > 其他分享 >脚本编写的一个通用框架

脚本编写的一个通用框架

时间:2023-03-21 12:34:15浏览次数:35  
标签:脚本 status return 框架 mobile except pwd 编写 data

总结基于python写脚本的框架

# -*- encoding:utf-8 -*-
# @time: 2023/3/21 12:11
# @author: Maxs_hu
"""
基于python实现小脚本的基础框架:
    1. 利用yield生成器函数, 将读取到的数据返回
    2. 线程池执行主线任务
    3. try...except捕获异常. 也可做日志记录
    4. 利用 函数式迭代 可以避免代码重复
    5. send_sms() -> for循环+try...except. 没报错直接return. 报错就继续循环执行. 最后如果十次都没有成功. 返回异常
"""

from concurrent.futures import ThreadPoolExecutor


def geetest():
    try:
        # 实现滑动验证
        return True, 123
    except Exception as e:
        return False, str(e)


def send_sms():
    for i in range(5):
        try:
            # 发送短信
            return True, 123
        except Exception as e:
            pass

    return False, "短信发送异常了"


def login():
    while True:
        try:
            # 发送短信
            return True, 123
        except Exception as e:
            pass


def task(mobile, pwd):
    try:
        # 滑动验证
        status, data_or_error = geetest()
        if not status:
            # 错误记录, mobile+pwd+data_or_error + 滑动验证
            return

        # 发送短信
        status, data_or_error = send_sms()
        if not status:
            # 错误记录, mobile+pwd+data_or_error + 发送短信步骤
            return

        # 登录
        status, data_or_error = login()
        if not status:
            # 错误记录, mobile+pwd+data_or_error + 登录失败
            return

        func_list = [geetest, send_sms, login]
        for func in func_list:
            status, data = func()
            if not status:
                return



    except Exception as e:
        print("异常", e)  # 记录下来


def read_file():
    # 手机号,密码 500
    # 手机号,密码
    # 手机号,密码     v1,v2 = [11,22]
    with open('xxxx.txt', mode='r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            mobile, pwd = line.split(',')
            yield mobile, pwd


def run():
    pool = ThreadPoolExecutor(10)

    gen = read_file()  # 接受生成器函数
    for mobile, pwd in gen:
        # print(mobile, pwd)
        pool.submit(task, mobile, pwd)

    pool.shutdown()  # 主线程等待
    print("5000个任务全部执行完毕")


if __name__ == '__main__':
    run()

标签:脚本,status,return,框架,mobile,except,pwd,编写,data
From: https://www.cnblogs.com/Maxs-message/p/17239569.html

相关文章

  • 编写高质量c#代码的20个建议
    一。字符串操作:哪个效率更高。1.string装箱2.StringBuilder更高3.string.Format("{0}{1}{2}",a,b,c)更高二。默认类型转换:使用类型内部的方法转换;parse,tryparse,tostr......
  • 解决Python运行脚本时ModuleNotFoundError: No module named 'xxx'报错
    自己写的项目直接在Pycharm里run或debug没问题,但使用cmd命令通过pythonxxx.py运行脚本,如果脚本import了其他文件的方法就会报错:ModuleNotFoundError:Nomodulenamed'xx......
  • ubuntu18.04 脚本自启动方法
    1,修改/lib/systemd/system中文件rc-local.service文章末位加入这三行数据[Install]WantedBy=multi-user.targetAlias=rc-local.service 2,编辑/etc/rc.local添加需要......
  • ssh配置免密登录脚本
    SSH免密登录是一种通过SSH协议实现的无需输入密码即可登录目标主机的方式。它可以提高用户的登录效率和安全性。#!/bin/bash#生成公钥和私钥ssh-keygen#将公钥复制......
  • Linux启动Java程序jar包Shell脚本
    手动方式启动和终止java程序启动java程序jar:nohupjava-jarXXX.jar查看程序占用pid:ps-ef|grepXXX.jar或jpsjps是jdk提供的一个查看当前java进程的小工具,查询Lin......
  • 阅读jdk源码和框架源码有什么好处?
    感受一种优秀的编程思想:通过阅读JDK源码和框架源码,可以学习到Java编程中很多优秀的设计思想,例如面向对象编程、设计模式以及良好的编码风格等。理解底层原理:深入学习JDK源......
  • Flink计算框架概述
    Flink是一个针对流数据和批数据的分布式处理引擎,主要用Java代码实现。目前,Flink主要还是依靠开源社区的贡献来发展的。对于Flink,其处理的数据主要是流数据,批数据只是流......
  • 全志系列芯片如何在Tina Linux中使用脚本完成定制化升级?
    1.主题在TinaLinux中,如何使用脚本完成定制化升级2.问题背景硬件:全平台软件:Tina其他:支持OTA升级的平台,可实现脚本定制化升级3.具体表现在OTA升级过程中,添加定制化需......
  • 使用 Python 实现一个 RPC 框架
    1.概述RPC是什么?RPC(RemoteProcedureCallProtocol),RPC是指远程过程调用,比如现在有两台服务器A、B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方......
  • Comet4J AJAX 服务器推送框架
    Comet4J(CometforJava)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。功能特性推送消息广播。......