【问题标题】:Scheduler on DebianDebian 上的调度程序
【发布时间】:2015-04-22 16:02:11
【问题描述】:

beaglebone 上的 debian 中不存在 Upstart,我不想弄乱它。在https://github.com/web2py/web2py/blob/master/scripts/setup-scheduler-centos.sh 中开发了一个脚本,它使用 chkconfig 将服务添加到启动中。 chkconfig 在 debian 中也不存在。 我尝试修改脚本并使用 update-rc.d,但是所有尝试都失败了。 最终我想做的是运行定期任务,欢迎和赞赏任何建议。我知道 Celery,但我发现 Massimo 关于调度程序的论点令人信服并想使用它。顺便问一下,web2py cron 的主要缺点是什么?我应该尝试使用它吗?

【问题讨论】:

  • 我认为您的问题更适合Super User,因为您没有任何编码问题(至少您没有显示失败的代码)。 web2py cron 的缺点 应该是一个单独的问题(如果有的话,因为对此的答案可能是基于意见的)。

标签: debian scheduled-tasks web2py


【解决方案1】:

如果你想运行简单的周期性后台任务,我建议使用 web2py 的“自制任务队列”。使用以下终端命令将允许任何 python 脚本访问应用程序的模型,同时在后台运行(您可以使用 cron 安排此命令在启动时运行):

nohup python web2py.py -S myapp -M -R applications/myapp/private/myscript.py

您的自定义脚本(通常保存在应用程序的 /private 文件夹中)可能如下所示:

## in file /myapp/private/mail_queue.py
import time
while True:
    rows = db(db.queue.status=='pending').select()
    for row in rows:
        if mail.send(to=row.email,
            subject=row.subject,
            message=row.message):
            row.update_record(status='sent')
        else:
            row.update_record(status='failed')
        db.commit()
    time.sleep(60) # check every minute

这是来自 web2py 文档的示例脚本,用于检查数据库中的待处理消息(每 60 秒)并发送一封电子邮件。请注意,您的脚本应该是一个周期性的 while 循环,并且与控制器不同,您必须在对 db 进行更改后使用 db.commit()。

【讨论】:

    【解决方案2】:

    你可以用这个apt-get install gnome-schedule

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2018-05-22
      • 2019-01-11
      • 1970-01-01
      • 2014-08-19
      • 2015-02-09
      相关资源
      最近更新 更多