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

Python schedule库调用every()函数报错,求解决方案及替代库建议

问题解决与替代调度库推荐

先排查当前schedule库问题

你遇到的every()函数不存在的问题,大概率是装错了库或者导入冲突:

  • 先卸载现有schedule库,重新安装官方的python-schedule:
    pip uninstall schedule
    pip install python-schedule
    
  • 检查项目里有没有自己命名为schedule.py的文件,这会导致导入的是你自己的文件而非第三方库,改名即可。

替代调度库推荐

如果还是不想用schedule,这些库可以满足你的定时调度需求:

1. APScheduler

功能最全面的调度库之一,支持固定间隔、CRON表达式、指定时间等多种调度方式,还能搭配Redis、MongoDB等存储任务,适合复杂场景。
示例代码(实现每天指定时间发邮件):

from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime

def send_reminder():
    # 这里写你的send_email逻辑
    pass

scheduler = BlockingScheduler()
# 解析目标时间,按小时分钟设置CRON调度
target_time = datetime.strptime("2024-05-20 09:30:00", "%Y-%m-%d %H:%M:%S")
scheduler.add_job(send_reminder, 'cron', hour=target_time.hour, minute=target_time.minute)
scheduler.start()

2. Celery Beat

适合分布式系统,需要搭配Celery和消息队列(比如Redis、RabbitMQ)使用,能实现大规模分布式任务调度,适合后端服务场景。

3. RQ Scheduler

轻量级的Redis调度库,和RQ队列配合使用,适合依赖Redis的项目,语法简单易上手。
示例代码:

from rq_scheduler import Scheduler
from redis import Redis
from datetime import timedelta

def send_reminder():
    # 你的邮件发送逻辑
    pass

# 连接Redis
scheduler = Scheduler(connection=Redis(host='localhost', port=6379))
# 每天同一时间运行任务
scheduler.cron("30 9 * * *", send_reminder)  # 每天9:30执行

4. sched(Python内置库)

不需要额外安装,是Python标准库自带的调度模块,适合简单的单次或周期性调度,功能相对基础。
示例代码:

import sched
import time
from datetime import datetime

s = sched.scheduler(time.time, time.sleep)

def send_reminder(sc):
    # 邮件发送逻辑
    # 24小时后再次调度
    next_run = time.time() + 86400
    s.enterabs(next_run, 1, send_reminder, (sc,))

# 第一次运行时间
first_run = datetime.strptime("2024-05-20 09:30:00", "%Y-%m-%d %H:%M:%S").timestamp()
s.enterabs(first_run, 1, send_reminder, (s,))
s.run()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:20:02