Questions tagged «scheduled-tasks»

计划任务是计划在某个时间发生并可能重复的计算机任务。

5
在Android中安排重复任务
我正在设计一个具有重复任务的应用程序,只要该应用程序处于前台,它就会将状态发送到专用服务器。 在网上搜索中,我看到了几种不同的方法,并且想知道什么是最好的方法。 安排服务器呼叫的最佳方法是什么? 我看到的选项是: 计时器。 ScheduledThreadPoolExecutor。 服务。 带AlarmManager的 BroadcastReciever 。 你怎么看? 编辑: 我需要它的原因是基于聊天的应用程序,该应用程序将所有用户操作发送到远程服务器。即用户正在键入消息,用户正在阅读消息,用户在线,用户离线等。 这意味着每隔一个间隔,我需要向服务器发送我在做什么,因为我与其他人打开聊天室,所以他们需要知道我在做什么。 类似于whatsapp消息反馈机制: 编辑#2: 现在应该几乎总是通过JobSchedulerAPI(或FirebaseJobDispatcher针对较低的API)安排重复执行的任务,以防止电池耗尽的问题,如Android培训的“ 生命周期”部分所述 编辑#3: FirebaseJobDispatcher已被不推荐使用,并由Workmanager取代,后者还结合了JobScheduler的功能。

7
scheduleAtFixedRate与scheduleWithFixedDelay
ScheduledExecutorServicescheduleAtFixedRate和scheduleWithFixedDelay方法之间的主要区别是什么? scheduler.scheduleAtFixedRate(new Runnable() { @Override public void run() { System.out.println("scheduleAtFixedRate: " + new Date()); } }, 1, 3L , SECONDS); scheduler.scheduleWithFixedDelay(new Runnable() { @Override public void run() { System.out.println("scheduleWithFixedDelay: " + new Date()); } }, 1, 3L , SECONDS); 它们打印的时间完全相同,似乎它们以完全相同的时间间隔执行。



13
如何将Linux cron作业转换为“亚马逊方式”?
不管是好是坏,我们已经将整个LAMP Web应用程序从专用计算机迁移到了云(Amazon EC2计算机)。这将极大到目前为止,但我们做的方式crons是次优的。我有一个特定于亚马逊的问题,关于如何使用“亚马逊方式”最好地管理云中的cron作业。 问题:我们有多个Web服务器,并且需要运行批处理作业,例如创建RSS提要,触发电子邮件以及实际上许多其他事情。但是cron作业只需要在一台机器上运行,因为它们经常写入数据库,因此如果在多台机器上运行,结果将重复。 到目前为止,我们将其中一个Web服务器指定为“主Web服务器”,它具有其他Web服务器所没有的一些“特殊”任务。云计算的权衡是可靠性-我们不希望有“主服务器”,因为它是单点故障。我们希望它们全部相同,并且能够进行升迁和降尺度,而不必记住不要将主Web服务器从群集中移出。 我们如何重新设计应用程序以将Linux cron作业转换为没有单点故障的临时工作项? 到目前为止,我的想法是: 有一台专用于仅运行克朗的机器。这将更易于管理,但仍将是单点故障,并且由于额外的实例而浪费一些钱。 可以将一些作业从Linux克隆转移到MySQL Events,但是我并不赞成这个想法,因为我不想将应用程序逻辑放入数据库层。 也许我们可以在所有机器上运行所有cron,但是可以更改cron脚本,因此它们都以实现锁定机制的逻辑开始,因此只有一台服务器实际采取了行动,而其他服务器只是跳过了。我不是这个想法的拥护者,因为它听起来可能有问题,我宁愿使用Amazon的最佳实践而不是自己动手做。 我正在想象这样一种情况:将作业安排在某个地方,添加到队列中,然后Web服务器可能每个都是工人,可以说“嘿,我来接这个”。Amazon Simple Workflow Service听起来完全是这种事情,但我目前对此了解不多,因此任何细节都将有所帮助。像cron这样简单的东西似乎有点沉重?是正确的服务还是有更合适的亚马逊服务? 更新:自从提出问题以来,我已经在YouTube上观看了Amazon Simple Workflow Service网络研讨会,并在34:40(http://www.youtube.com/watch?v=lBUQiek8Jqk#t=34m40s)注意到了这一点,幻灯片中提到cron作业作为示例应用程序。在其文档页面“ Amazon SWF的AWS Flow Framework示例 ”中,亚马逊表示它们具有cron的示例代码: ... > Cron作业在此示例中,长时间运行的工作流程会定期执行一项活动。演示了将执行作为新的执行继续执行的能力,从而使执行可以运行很长时间。... 我下载了适用于Java的AWS开发工具包(http://aws.amazon.com/sdkforjava/),并确保将足够的代码埋在一个荒谬的文件夹层中aws-java-sdk-1.3.6/samples/AwsFlowFramework/src/com/amazonaws/services/simpleworkflow/flow/examples/periodicworkflow。 问题是,如果我说实话,这并没有真正的帮助,因为这不是我可以轻松使用自己的技能组合来消化的东西。PHP SDK中缺少相同的示例,并且似乎没有教程可循此过程。因此,基本上,我仍在寻找建议或技巧。

2
使用Celery vs. RQ的利弊[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 改善这个问题 目前,我正在处理需要实施一些后台作业(主要用于电子邮件发送和大量数据库更新)的python项目。我将Redis用于任务代理。因此,在这一点上,我有两个候选人:Celery和RQ。我对这些工作队列有一定的经验,但我想请大家分享使用此工具的经验。所以。 使用Celery vs.RQ有什么优缺点。 适合使用Celery vs. RQ的项目/任务的任何示例。 Celery看起来很复杂,但是它是功能齐全的解决方案。实际上,我认为我不需要所有这些功能。从另一方面讲,RQ非常简单(例如,配置,集成),但是它似乎缺少一些有用的功能(例如,任务吊销,代码自动重载)


14
如何检查服务是否通过批处理文件运行并启动(如果未运行)?
我想编写一个执行以下操作的批处理文件: 检查服务是否正在运行 如果正在运行,请退出该批处理 如果未运行,请启动服务 到目前为止,我在Google上搜索过的代码示例都无法正常工作,因此我决定不发布它们。 通过以下方式启动服务: net start "SERVICENAME" 如何检查服务是否正在运行,以及如何在批处理文件中创建if语句? 我有点困惑。我必须传递给网络起点的论点是什么?服务名称或其显示名称?



18
如何每天在特定时间在C#中调用方法?
我已经搜索了SO,找到了有关Quartz.net的答案。但这对于我的项目来说似乎太大了。我想要一个等效的解决方案,但要更简单(最好是在代码中)(不需要外部库)。如何每天在特定时间调用方法? 我需要添加一些有关此的信息: 最简单(最丑陋)的方法是每秒钟/分钟检查一次时间,并在正确的时间调用该方法 我想要一种更有效的方法来执行此操作,而无需经常检查时间,并且可以控制该作业是否完成。如果该方法失败(由于任何问题),则程序应知道要写入日志/发送电子邮件。这就是为什么我需要调用方法而不是安排工作的原因。 我发现此解决方案在Java中固定时间在Java中调用方法。C#中有类似的方法吗? 编辑:我已经做到了。我在void Main()中添加了一个参数,并创建了一个蝙蝠(由Windows Task Scheduler计划)以使用此参数运行程序。程序运行,执行工作,然后退出。如果作业失败,则可以写日志和发送电子邮件。这种方法很符合我的要求:)

5
在Windows中设置Cron作业
我每天必须从SFTP服务器下载文件。我有从服务器检索文件的程序,但是我正在考虑设置一个cron作业(或类似的东西)以使其自动化。我们是Windows商店,需要在Windows中设置cron作业。

8
spring @Scheduled注释方法是否在不同的线程上运行?
我有几种用注释的方法@Scheduled(fixedDelay=10000)。 在应用程序上下文中,我具有以下注释驱动的设置: <task:annotation-driven /> 问题是,有时某些方法的执行会延迟几秒钟甚至几分钟。 我假设即使某个方法需要一段时间才能完成执行,其他方法仍将执行。所以我不明白延迟。 有没有办法减少甚至消除延迟?


6
通过Spring编程安排作业(动态设置fixedRate)
目前我有这个: @Scheduled(fixedRate=5000) public void getSchedule(){ System.out.println("in scheduled job"); } 我可以更改它以使用对属性的引用 @Scheduled(fixedRateString="${myRate}") public void getSchedule(){ System.out.println("in scheduled job"); } 但是,我需要使用通过编程获得的值,以便可以在不重新部署应用程序的情况下更改计划。什么是最好的方法?我意识到可能无法使用注释...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.