Python Pyramid 周期性任务

标签 python scheduled-tasks pyramid

我的问题是关于如何在 Pyramid Python 框架中执行一个简单的任务?

我有一张包含用户生日的表格,我想每天检查某人的生日是否即将到来,如果是,打印一个简单的问候语。

所以我在 views.py 中定义了一些东西:

def print_greetings():
   tomorrow = datetime.date.today()+datetime.timedelta(days=1)
    users = sess.query(User).filter(func.DATE_FORMAT(User.bday, "%d_%m")==tomorrow.strftime("%d_%m")).all()
    if len(users) > 0:
        for u in users:
            print("Happy Birthday", u.name)

所以问题是: 我应该如何以及在哪里写一些东西来每天执行一次这个函数?

UPD:我需要从 Pyramid 应用程序运行任务,像 cron 这样的外部工具不是我要找的东西。

也许某种计时器会执行 print_greetings()?执行后会启动一个新的定时器实例吗?

最佳答案

虽然 Celery 对于这样的任务来说是一个相当“重量级”的解决方案,但我建议使用 APScheduler .您可以像在 cron 中一样设置调度程序,但它会在您的应用程序中运行。在这种情况下,内存中的作业存储工作正常。

import atexit
from apscheduler.schedulers.background import BackgroundScheduler

scheduler = BackgroundScheduler()
scheduler.start()
scheduler.add_job(print_greetings,
    id='greetings', 
    name='Send out birthday greetings', 
    trigger='cron', 
    minute=0, 
    hour=12,
)

atexit.register(lambda: scheduler.shutdown())

关于Python Pyramid 周期性任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584597/

相关文章:

python - 将 ctime(类似)时间戳转换为 tz 感知的日期时间实例

java - 如何在Spring Boot中当前运行的线程上运行@schedule

python - Pyramid 中的用户身份验证

python - 在哪里可以通过实际示例学习 Pyramid?

python - 即使 base.py 存在,也没有名为 'base' 的模块

Python,如何将图像设置到ttk.notebook选项卡

python - Python 如何解释这个条件?

java - "postpone"任务真的那么难(或 "wait for idle")

mongodb - 为 MongoDB 调度 MapReduce 作业

python - 在 Python Pyramid 单元测试中查看日志输出