为web应用运行重复任务

2024-06-16 09:13:40 发布

您现在位置:Python中文网/ 问答频道 /正文

这似乎是一个简单的问题,但我很难找到答案。在

我正在制作一个需要不断运行任务的web应用程序。在

我将使用Pingdom或{a2}之类的站点作为类比。正如您可能知道的,Pingdom检查正常运行时间,所以经常检查网站是否正常运行,Twitterfeed检查RSS提要,看它们是否已更改,然后在tweet上发布。我也需要运行一个简单的脚本来循环访问数据库中的url并对它们执行操作。在

我的问题是:我应该如何实现这一点?我熟悉cron,目前正在使用它来执行服务器备份。这是该走的路吗?在

我知道如何制作一个可以无限期运行的Python脚本,在我完成后从数据库中的下一个URL开始。我应该在服务器上运行吗?我怎么知道它总是在运行,不会崩溃什么的?在

我希望这个问题有意义,我希望我没有重复别人或任何事情。在

谢谢你

山姆

编辑:说清楚,我需要任务不断运行。在中,检查数据库中的URL 1,检查数据库中的URL 2,检查URL 3,当它到达最后一个时,直接返回到开头。谢谢!在


Tags: 答案服务器脚本web数据库应用程序a2url
2条回答

如果您需要一个可以从命令行运行的任务的可重复运行,cron就是理想的选择。 我看不出这种方法有什么缺点。

更新: 好吧,我觉得这个问题有些不同。现在我看到了几种解决方案:

  • 以设定的时间间隔运行cron任务,让它每次运行处理一次数据,下次再处理一次;使用PIDs/数据库/信号量避免并行处理
  • 更新在数据库中插入/更新数据的进程;在插入/更新信息时,让信息得到处理;c)
  • 编写一个demon进程,它将驻留在内存中并实时检查数据。在

cron肯定是一种解决此问题的方法,以及您可能喜欢的任何其他任务调度器。

你的问题标题中有一个要点:

Run a repeating task for a web app

后台任务和web应用程序应该分开。它们可以是独立的数据库,但它们可以共享独立的数据库。(将它们视为访问相同后端逻辑的独立UI。)

这主要是因为web应用程序和后台进程在架构上有很大的不同,并不打算混合使用。考虑在web服务器(Apache、IIS等)中保存的web应用程序的结构。应用程序何时“运行”?当它“打开”时?这不是一个真正的任务。它是一个等待输入(请求)处理和生成输出(响应)的服务,然后返回到等待状态。

Web应用程序用于响应请求。计划任务或守护程序作业用于在后台运行重复的进程。把两者分开会使你对这两者的管理变得容易得多。

相关问题 更多 >