ann*_*rey 5 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)
Run Code Online (Sandbox Code Playgroud)
所以问题是:我应该如何以及在哪里编写一些东西来每天执行一次这个函数?
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())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1889 次 |
| 最近记录: |