繁体   English   中英

在Play framework 2.x app中调度/延迟作业/任务

Scheduling/delaying of jobs/tasks in Play framework 2.x app

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在典型的Web应用程序中, 有些事情我更喜欢作为延迟的作业/任务运行 他们往往具有以下部分或全部属性:

  • 需要很长时间(从几秒到几分钟到多个小时)。
  • 占用一些资源(CPU,网络,磁盘,外部API限制等)
  • 结果不是立即需要的。 没有它就可以完成HTTP响应。 好的(甚至可能更好)延迟到以后。
  • 可以(并且可能更喜欢)在(a)不同于web服务器的机器上运行。 机器可能是专用的作业/任务运行者。
  • 应该响应其他事件运行,或定期启动。

在Scala + Play Framework 2.x应用程序中设置,排队,安排和运行延迟的作业/任务的首选方法是什么?

更多细节...

我过去使用的模式,如果适用,我想复制的模式是:

  • 在Web请求的处理程序中,或在类似cron的调用中,将队列排入队列
  • 在工作跑步者中,一次反复出列并运行一项工作
  • 可能处理录制作业结果

这似乎是一个相对简单但仍然相对灵活的模式。

我过去遇到的例子包括:

  • 在DB中更新派生数据
  • 分析/跟踪API调用Web请求
  • 删除过期的会话或其他陈旧/过时的DB记录
  • 定期批量ETL

在其他语言/框架中,我通常会使用作业/任务框架。 例子包括:

  • 在Ruby + Rails应用程序中使用Resque
  • Celery在Python + Django应用程序中

我发现了以下现有材料,但遗憾的是,我不认为它们直接适合我的用例。

  • 播放1.x异步作业API (+引用它的各种SO问题)。 似乎已在2.x行中删除。 没有提到取代它的东西。
  • 播放2.x Akka集成 似乎非常通用。 我想可以使用Akka进行上述操作,但如果已经存在,我宁愿不编写作业/任务框架。 此外,没有关于如何将作业运行器机器与Web服务器分开的信息。
  • 这个答案 对于“短到中等持续时间的IO绑定”情况似乎有希望,例如分析调用,但不一定是“CPU绑定”情况(可能不应该绑定Web服务器上的CPU,更喜欢运送到不同的节点), “大量网络”案例,或“多个小时”案例(可能不应该留在Web服务器的后台,即使它没有占用太多资源)。
  • 这个问题和相关问题 与上面类似,在我看来,这仅涵盖了在同一个Web服务器上运行的情况。

进一步澄清用例(根据评论者的要求)。 我尝试在这里复制的resque或芹菜等有两个主要的用例:

  • 网站上的某些事件(通常,传入的Web请求会导致任务入队。)
  • 任务应定期运行。 (大多数情况下,这实现为:定期执行,将任务排队,如上所述。)

对于resque或celery,两个用例排队的任务以相同的方式进入队列,并由runner / worker进程以相同的方式处理。 除非其他Scala或Play特定的考虑因素,这将是我对如何处理此问题的初步猜测。

进一步澄清为什么我不相信Akka调度程序适合我开箱即用的用例(根据评论者的要求):

毫无疑问,使用Akka调度程序(用于定期作业),akka-remote和akka-cluster(用于作业调用者和作业运行者之间的通信)的某种组合来构建适合的解决方案,这种方法需要一定的量胶水代码本身几乎是一个延迟的工作框架。 如果它存在,我宁愿使用现有的开箱即用的解决方案,而不是重新发明轮子。

问题暂未有回复.您可以查看右边的相关问题.
1 在PlayFramework 2.5.X(Java)中调度异步任务

我们有一个使用PlayFramework 2.5.4和MongoDB的Play-Project。 我们希望每天更新我们的数据库。 目前,我们会在每次收到请求时检查时间,并在一天结束时更新。 这导致了一些问题: 当前玩家必须等待很长时间才能完成请求 可能会发生有一天没有更新 ...

2 毫秒延迟的调度作业

TL; 博士 无法在 Laravel 中以毫秒延迟调度作业,因为available_at列采用 unix 时间戳格式并且不支持毫秒。 我将数据库驱动程序用于作业并希望延迟作业分派。 我的算法要求我以毫秒延迟(例如 100毫秒)调度作业。 在文档中,它用->delay(now()-&g ...

3 Spark runner 上的 Apache Beam:为什么在 Streaming 作业中调度延迟会增加?

我定义了一个从 Kafka 主题读取的管道,执行一些步骤并将结果发布到输出 Kafka 主题。 当我在直接运行模式下测试它时,一切都很好。 但是,当我将梁应用程序提交给 spark 时,我的行为变得很严重: - 调度延迟增加。 经过长时间的调查,我发现批次的持续时间太小(500 毫秒)。 ...

4 延迟的作业:延迟的作业任务挂起

我正在使用延迟的作业来执行后台作业。 我正在使用命令RAILS_ENV=production bin/delayed_job -n 5 start运行延迟的作业 当我开始延迟作业并检查延迟作业时,它表明作业正在运行。 当我在1个小时的延迟作业状态之后再次检查延迟作业时,所有作业的状态仍 ...

5 在linux中调度任务

我们可以安排程序每5毫秒或10毫秒等执行一次吗? 我需要通过串口产生1 khz和15 khz的脉冲。 但程序只应切换串口中的引脚,因此频率必须由调度程序产生。 这是否可以在Linux中使用rt补丁? ...

2014-03-05 06:04:27 4 761   c/ linux
6 在Spring MVC中调度任务

在我的Spring MVC应用程序中,我需要安排具有特定日期和时间的任务。 我必须安排发送一封由客户动态配置的电子邮件。 在Spring @Schedule中有注释,但是如何在每次使用任何日期和时间时动态更改值。 任何帮助表示赞赏。 ...

8 Django 中的作业调度

我需要在我们的 Django 应用程序中实现一个计划任务。 DBader 的日程安排似乎是该工作的一个很好的候选人,但是当它作为 Django 项目的一部分运行时,它似乎并没有产生预期的效果。 具体来说,这作为一个独立程序运行良好: 但是在 Django 上下文中运行的这个(等效的)代码不会 ...

9 MongoDB 中的作业调度

我工作的项目需要在 MongoDB 和 SQL Server 之间同步数据,那么最好的方法是什么? 这个同步应该由MongoDB端处理; MongoDB 是否支持作业调度? 我是 MongoDB 的新手,我想知道一些关于它的事情。 我知道它不是 RDBMS,但万一有可能,那又如何呢? 就像我们 ...

2012-11-09 09:06:27 1 11758   mongodb
10 在python中调度作业

在python中是否有一种方法,通过它我可以在特定时间之间每天安排任务。 我找到了一些调度程序,但我看不到这样的功能。 提前致谢 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM