python特定时间段运行程序

2023-05-16

import requests
import time
from datetime import datetime, timedelta
'''
死循环程序在每天8:45~23:45期间,每隔1小时发送信息
代码逻辑:=======
死循环运行:
    判断当前时间 in 今天8:45~今天23:45   
        判断当前时间 before xx:45
            程序休眠至 xx:45, 再运行send_msg()
        else:当前时间 after xx:45
            程序休眠至 下一个xx:45, 再运行send_msg()
            
    else:
        判断当前时间 before 今天8:45
            程序休眠至 今天8:45, 再运行send_msg()
        else:当前时间 after 今天23:45
            程序休眠至 明天8:45, 再运行send_msg()
    
'''

def send_msg():
    print(requests.get('https://www.baidu.com'))
    time.sleep(60)

while True:
    today_now = datetime.now()
    print(today_now)
    today_at_0845 = today_now.replace(hour=8, minute=45, second=0)
    today_at_2345 = today_now.replace(hour=23,minute=45, second=0)
    if today_at_0845 <= today_now <= today_at_2345:
        diff45 = today_now.replace(minute=45, second=0) - today_now
        if 0 <= diff45.days:
            print('before xx:45, sleep....')
            time.sleep(diff45.seconds)
        else:
            print('after xx:45, sleeping...')
            diff45 = today_now.replace(hour=today_now.hour + 1, minute=45, second=0) - today_now
            time.sleep(diff45.seconds)
    else:
        print('no in', '='*30)
        diff = today_at_0845 - today_now
        if 0 <= diff.days:
            print('before today_at_0845, sleep...')
            time.sleep(diff.seconds)
        else:
            print('after today_at_2345, sleep...')
            tomorrow_at_0845 = today_now.replace(hour=8, minute=45, second=0) + timedelta(days=1)
            diff = tomorrow_at_0845 - today_now
            time.sleep(diff.seconds)
    send_msg()


def sleeping():
    '''
    对上面的代码进行封装。
    用于实现每天的定时拨测:从8:45到23:45,每隔一个小时
    :return:
    '''
    begin_hour = 8
    minute_point = 45
    end_hour = 23
    per_hour = 1

    today_now = datetime.now()
    print(today_now)
    today_at_0845 = today_now.replace(hour=begin_hour, minute=minute_point, second=0) # begin time
    today_at_2345 = today_now.replace(hour=end_hour, minute=minute_point, second=0) # end time
    if today_at_0845 <= today_now <= today_at_2345:
        diff45 = today_now.replace(minute=minute_point, second=0) - today_now
        if 0 <= diff45.days:
            print(f'before xx:{minute_point}, sleep....')
            time.sleep(diff45.seconds)
        else:
            print(f'after xx:{minute_point}, sleeping...')
            # diff45 = today_now.replace(hour=today_now.hour + 1, minute=minute_point, second=0) - today_now
            diff45 = today_now.replace(minute=minute_point, second=0) - today_now + timedelta(hours=per_hour)
            time.sleep(diff45.seconds)
    else:
        print('no in', '=' * 30)
        # my_logger.info('no in', '=' * 30)
        diff = today_at_0845 - today_now
        if 0 <= diff.days:
            print(f'before today_at_08{minute_point}, sleep...')
            time.sleep(diff.seconds)
        else:
            print(f'after today_at_23{minute_point}, sleep...')
            tomorrow_at_0845 = today_at_0845 + timedelta(days=1)
            diff = tomorrow_at_0845 - today_now
            time.sleep(diff.seconds)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python特定时间段运行程序 的相关文章

  • java 和javascript的区别?你是否还在把他们混为一谈呢

    1 javascript是基于对象的 xff0c 它是一种脚本语言 xff0c 是一种基于对象和事件驱动的编程语言 xff0c 因而它本身提供了非常丰富的内部对象供设计人员使用 而Java是面向对象的 xff0c 即Java是一种真正的面向
  • vs2019智能提示设置为中文

    官网修改中文提示地址 xff1a https docs microsoft com zh cn dotnet core install localized intellisense 1 去官网下载intellisense语言包 下载链接 x
  • .net中的定时任务

    FluentScheduler是什么 xff1f FluentScheduler是 net中的任务调度框架 xff0c 也就是你如果想在 net程序跑一段代码 xff0c 同时又不影响主程序的运行时 就可以使用FluentScheduler
  • 实用的Visual Studio插件

    打开Visual Studio 扩展 管理扩展 安装自己需要的插件 01 CodeMaid CodeMaid快速整理代码文件 xff0c 规范你的代码 xff0c 提高代码阅读体验 代码自动对齐 xff0c 格式化代码 xff08 ps x
  • mysql 数据库信息探索

    mysql 数据库信息探索 xff08 1 xff09 查询数据库的表数量 SELECT COUNT TABLES table schema FROM information schema TABLES GROUP BY table sch
  • .net 6 基于AspNetCoreRateLimit的限流

    1 安装包 AspNetCoreRateLimit 2 在appsetting cs中加入IpRateLimiting配置节点 span class token comment 限流配置 span span class token stri
  • 关于汉字转拼音并排序解决方案

    使用方法 xff1a 写一个静态帮助类 span class token keyword public span span class token keyword static span span class token keyword c
  • .NET Core6 中使用AutoMapper

    1 引入AutoMapper包 2 新建一个类 xff1a MappingProfile xff0c 类名自定义 xff0c 但是必须要继承 Profile类 用于创建映射规则 如图 xff1a Student为源数据 xff08 我这里是
  • 使用Python调用百度OCR

    使用Python调用百度OCR 注册 登录百度智能云创建应用安装python SDK接口说明代码实现 xff08 本地图片 xff09 代码实现 xff08 使用url上的图片并使用可选参数 xff09 注册 登录百度智能云 注册请点击 登
  • 001 超全C语言程序设计概念

    前言 此笔记主要参考自赵海英老师的C语言课程 xff0c 此笔记是在考研重新学习C语言的情况下进行的整理 xff0c 主要用于后续的C语言概念温故知新 第一章 基础知识 1 数制及转换 四种数制 xff1a 二进制 十进制 八进制 十六进制
  • 使用@Autowired注解警告Field injection is not recommended

    问题 xff1a 在使用变量方式依赖注入时 xff0c 提示Field injection is not recommended 64 Autowired LogService logService 虽然变量方式注入非常简洁 xff0c 但
  • mybatis动态数据源,分页插件失效

    mybatis动态数据源 xff0c 分页插件失效 发表于 xff1a 2020 08 18 20 42 47 阅读量 xff1a 9 作者 xff1a 黄叶 原因 xff1a 使用动态数据源 xff1a 数据正常但是total为0 解决
  • mybatis动态数据源配置使用事务不生效

    原因 xff1a 因为我使用的是配置的方式来加载数据源 xff0c 因此我们还需要对事务管理器进行一个配置 解决 xff1a 在代码中添加 配置事物 64 param dataSource 64 return 64 Bean public
  • Caffeine cache实现本地缓存(简单又清楚)

    Caffeine cache实现本地缓存题 缓存填充策略 手动加载 介绍 xff1a 使用方式 xff1a 同步加载 介绍 xff1a 使用方式 xff1a 异步加载 介绍 xff1a 注意 xff1a 异步和同步使用方式相似 这里的话主要
  • 商城后台系统 — 新手练习 —毕业设计

    商城后台系统 新手练习 毕业设计 业务功能介绍项目地址 xff1a 一 商品管理1 商品列表 描述 效果 2 添加商品 描述 效果 3 商品分类 描述 效果 4 商品类型 描述 效果 二 订单管理1 订单列表 描述 效果 2 订单设置 描述
  • CASE WHEN函数@sql学习

    mysql中可以使用CASE WHEN函数完成数据分组 CASE WHEN函数用来对数据进行判断和分组 来自MySQL触发器里的流程控制语句 知识 CASE WHEN是SQL编程中常用的条件控制语句 CASE WHEN的功能 xff1a 新
  • @Autowired注入为null — 4种常见情况

    64 Autowired注入为null 情况一 使用过滤器 原因解决 情况二 没有添加注解 原因解决 情况三 xff08 没有被扫描到 xff09 原因解决 情况四 xff08 手动new xff09 原因解决 情况一 使用过滤器 原因 因
  • TDD项目实战-命令行参数解析

    认识1 基本规则2 三步骤3 任务分解法总结 项目1命令行参数解析01 任务分解法与整体工作流程1 API 构思与组件划分2 功能分解与任务列表3 红绿灯循环 02 识别坏味道与代码重构1 引入多态接口2 使用 抽象工厂 模式的变体来替换分
  • mapper扫描问题(Invalid bound statement (not found))

    分析 xff1a 通常来说这种情况是mybatis没有配置好 但是还有一种可能是你的mapperscan扫描问题 解决 xff1a 使用这个的时候应该扫描的是mapper层 如果我们用成全局的扫描 xff08 根目录 xff09 xff0c
  • 找不到org.springframework.cloud.client.loadbalancer.reactive.OnNoRibbonDefaultCondition

    原因 xff1a 该类存在于spring cloud commons jar 引用的jar包存在冲突 新版本的spring cloud commons中取消了OnNoRibbonDefaultCondition类 解决 xff1a 引入依赖

随机推荐

  • Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springfra..问题

    原因 xff1a 依赖冲突 解决 xff1a 例如我的是spring cloud starter gateway和spring boot starter web和spring boot starter webflux依赖冲突排除 sprin
  • 重构 - 消除重复的new创建

    如下 xff1a 有时会遇到这种重复的new创建 span class token keyword public span span class token keyword class span span class token class
  • IDEA快捷键-重构

    文章目录 重构项目案例参考重构技巧1 消除重复new创建重构技巧2 提炼函数 xff0c 消除重复计算 提炼函数提炼变量搬移函数inlIne使用 xff08 内联 xff09 inLine重构局部变量inLine重构方法 重构重构菜单栏ID
  • 重构 - 提炼函数,消除重复代码

    一 参考资料二 重构步骤 以提炼重复计算函数为例子演示代码具体步骤1 提取重复new创建2 提取会变化的信息3 使用抽取的共有信息 xff0c 并删除原有信息4 提取计算函数5 使用卫语句 xff0c 简化代码逻辑 一 参考资料 重构 2
  • 模板方法 + 工厂变体消除重复if else

    模板方法 43 工厂消除重复if else 1 将重复代码 xff0c 抽取到抽象类中2 子类实现抽象类3 使用工厂获取对象 思维导图 xff1a 示例代码 xff1a 1 将重复代码 xff0c 抽取到抽象类中 span class to
  • mapstruct学习及使用详解

    映射器定义基本映射自定义映射方法从多个源对象映射映射嵌套对象更新现有实例继承配置逆映射映射期间的异常处理 数据类型转换隐式类型转换映射集合映射策略映射流映射枚举定义默认值或常量定义默认表达式 映射器检索策略映射定制装饰器 64 Before
  • 开窗函数@sql学习

    参考链接 https zhuanlan zhihu com p 98655285 mysql8 0 43 开窗函数 开窗函数又称OLAP函数 xff08 Online Analytical Processing xff09 1 开窗函数的语
  • LWIP学习系列(一):OSI模型以及TCP/IP模型的整理

    一 OSI模型与TCP IP模型的对比图 这张图是从网上搜来的 xff0c 我认为能够比较好的对应其中的两种模型的差别 学习lwip对其中部分协议有个大致的了解就行了 xff0c 具体需要的时候 xff0c 在按需求进行学习
  • win10 ubuntu16 双系统共用蓝牙鼠标

    最近给新笔记本电脑装了win10 43 ubuntu16双系统 xff0c 发现原来在win10下已经配对的蓝牙鼠标 xff0c 在ubuntu下配对后 xff0c win10就不能用了 xff0c 需要重新配对才行 xff0c 反之亦然
  • Validation校检使用及验证反模式问题,详细

    Validation校检认识基本使用验证 Spring MVC 控制器的输入验证 service层输入验证持久化层 实体输入使用验证组为不同的用例验证不同的对象自定义验证错误自定义验证器以编程方式验证 验证反模式 使用问题 xff09 仅在
  • Springboot使用定时任务scheduler详解

    目录 认识示例代码定时任务 调度任务开启调度添加定时任务以固定延迟执行定时任务 fixedDelay以固定速率执行定时任务 fixedRate延迟第一次初始化 initialDelay以 ISO 时间格式指定间隔 fixedRateStri
  • @Builder导致的No primary or default constructor found 问题,原因分析和解决方法

    问题 span class token class name Resolved span span class token punctuation span span class token class name span class to
  • 使用stream流的map调用set()方法提示不存在变量R的实例,因此void符合R

    示例代码 span class token keyword public span span class token class name List span span class token generics span class tok
  • 使用gitee go将spring boot项目部署到云主机上并运行

    使用 进入Gitee Go xff0c 点击免费使用 选择要做流水线的仓库 xff0c 点击免费体验 进入界面后 xff0c 点击新建流水线 构建流水线 基本信息 流水线的名称 xff0c 当执行流水后会生成一个pipeline 20220
  • 目标追踪——光流法optical flow

    光流法简介 光流光流法光流的物理意义光流场 光流法基本原理金字塔方法基于光流的运动目标检测 xff08 前景检测 xff09 算法实现原理 光流 光流 xff08 optical flow xff09 是空间运动物体在观察成像平面上的像素运
  • Vim配置文件vimrc 2022_11_18

    Vimrc简介 vimrc是vim的配置文件 xff0c Vim编辑器相关的所有功能开关都可以通过 vimrc文件进行设置 备注 xff1a 文件名中的 rc 是出自 run commands 最初的源头是麻省理工学院在1965年发展的CT
  • Exception ignored in: <function BufferedFile.__del__ at 0x03A9D898> 2022_12_10

    1 代码 import paramiko 创建对象 client 61 paramiko SSHClient 进行验证 xff0c 填写yes client set missing host key policy paramiko Auto
  • 如何限制其他iframe加载自己的网站

    解决方案 xff1a 一 设置http请求头的X Frame Options X Frame Options可以设置三个值 1 DENY 如果页面包含在框架中 xff0c 则阻止呈现页面 2 SAMEORIGIN 与上面相同 xff0c 除
  • axios的delete请求遇到的坑

    大家在使用axios的delete请求的时候 xff0c 会不会遇到400错误 xff1f 后台接收不到delete请求传来的参数 xff1f 在使用put和post请求的时候 xff0c 我们习惯这么写 axios post url id
  • python特定时间段运行程序

    import requests import time from datetime import datetime timedelta 39 39 39 死循环程序在每天8 45 23 45期间 xff0c 每隔1小时发送信息 代码逻辑 x