这似乎是一个简单的问题,但我找不到答案。
我正在制作一个需要不断运行任务的网络应用程序。
我将使用Pingdom或Twitterfeed等网站作为类比。正如您所知,Pingdom会检查正常运行时间,因此不断检查网站以查看它们是否已启动,Twitterfeed会检查RSS源以查看它们是否已更改,然后发推文。我还需要运行一个简单的脚本来遍历数据库中的URL并对它们执行操作。
我的问题是:我该如何实现?我熟悉cron
,目前用它来进行我的服务器备份。这会是要走的路吗?
我知道如何制作一个无限运行的Python脚本,当我完成时,从数据库中的下一个URL开始。我应该在服务器上运行吗?我怎么知道它总是在运行而且不会崩溃或什么?
我希望这个问题有道理,我希望我不会重复别人或其他任何事情。
谢谢,
萨姆
编辑:要明确,我需要不断运行的任务。如图所示,检查数据库中的URL 1,检查数据库中的URl 2,检查URL 3,当它到达最后一个时,返回到开头。谢谢!
答案 0 :(得分:1)
如果您需要可以从命令行运行任务的可重复运行 - 这就是cron
最适合的任务。
我没有看到这种方法的任何缺点。
<强>更新强> 好的,我看到这个问题有些不同。现在我看到了几个解决方案:
答案 1 :(得分:1)
cron
肯定是一种方法,以及您可能更喜欢的任何其他任务调度程序。
主要观点在您的问题的标题中:
为网络应用运行重复任务
后台任务和Web应用程序应分开。他们可以共享代码,他们可以共享数据库的访问权限,但它们应该是独立的和离散的应用程序上下文。 (将它们视为访问相同后端逻辑的单独UI。)
这样做的主要原因是因为Web应用程序和后台进程在体系结构上非常不同,并不是要混合使用。考虑Web服务器(Apache,IIS等)中保存的Web应用程序的结构。应用程序什么时候“运行”?什么时候“开”?这不是一个真正的运行任务。它是一个服务,等待输入(请求)处理和生成输出(响应)然后再回到等待。
Web应用程序用于响应请求。计划任务或守护程序作业用于在后台运行重复的进程。保持两者分开将使您对这两者的管理变得更加容易。