You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python无限循环调度函数:邮件x值不更新及重复发送问题求解

问题解决:每30秒发送含最新循环次数的邮件

原代码问题分析

  1. x值不更新:调用schedule.every(30).seconds.do(send_email, 'Update Email', str(x))时,str(x)是直接传入当前x的字符串值,后续x变化不会影响已添加任务的参数,所以每次发送的都是任务创建时的x值。
  2. 大量重复邮件:无限循环中每次都添加新的定时任务,导致任务队列不断累积,schedule.run_pending()会触发所有到期的重复任务,短时间内发送大量邮件。

修改后的代码

import schedule
import time

x = 0

def send_email_wrapper():
    global x
    send_email('Update Email', str(x))
    x += 1

# 只创建一次定时任务
schedule.every(30).seconds.do(send_email_wrapper)

while True:
    schedule.run_pending()
    time.sleep(1)

改动说明

  • 用包装函数传递动态参数:定义send_email_wrapper函数,每次执行时都会读取当前最新的x值,再调用send_email,确保邮件内容是最新的循环次数。
  • 任务只创建一次:把定时任务的创建放在循环外面,避免每次循环都添加新任务,这样每30秒只会触发一次任务执行。
  • 调整x递增时机:将x的递增放在任务执行后,保证每次发送的邮件对应当前的循环次数,发送完成后再计数。

内容的提问来源于stack exchange,提问作者zsharkdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:40:38