【问题标题】:Queue suggestions for deferred execution for a one-off task为一次性任务延迟执行的队列建议
【发布时间】:2012-03-21 15:16:51
【问题描述】:

我正在寻找一个轻量级系统,它可以让我将一次性(非重复)任务排队并让它在未来的特定时间执行。

这适用于用户执行基于时间的任务的游戏后端。我需要服务器在完成时检查用户“工作”的状态,并对他们的游戏状态执行必要的内务管理。

我对 Redis、Celery、Beanstalkd、ZeroMQ 等有点熟悉,但我还没有找到任何关于安排将来要执行的单个工作单元的信息。 (或在设定的时间退出队列)Celerybeat 有一个用于 cron 类型的重复任务的调度程序,但我没有看到一次性的任何东西。

我还在 *nix 中看到了“at”命令,但我不知道有任何前端可以帮助我管理作业。

我知道有一些简单的解决方案,例如在 Redis 中排序键和执行阻塞弹出,但我不想连续轮询队列以查看下一个作业是否准备好。

我找到的最接近的是 GAE 上的延迟库,但我希望能在我自己的 Linux 机器上与其他组件一起运行。

如果有任何建议,我将不胜感激!

【问题讨论】:

  • 如果有人感兴趣,我想我找到了我想要的东西。 Beanstalkd 有一个“延迟”参数,可以将作业排入延迟队列,并在指定秒数后将其放入就绪队列。

标签: queue scheduled-tasks


【解决方案1】:

Celery 允许您在调用要执行的任务时指定倒计时或 ETA。

文档说得最好:

http://docs.celeryproject.org/en/latest/userguide/calling.html#eta-and-countdown

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2011-05-19
    • 1970-01-01
    • 2013-11-11
    • 2021-07-02
    相关资源
    最近更新 更多