2011-05-26 25 views
0

我使用python脚本(在Linux Web服务器上)根据请求重定向用户。重定向基于数据库(Python字典),数据库本身由远程CSV文件构建。在Python脚本中重定向url期间延迟文件更新

现在,我必须手动更新数据库,但CSV文件可以随时更改。

我正在寻找一种方法来在每个用户请求后(10秒后)更新数据库。通过这种方式,数据库始终保持最新状态,用户不会受到更新影响。

我想与棚模块,但它不工作。

import sched, time 
s = sched.scheduler(time.time, time.sleep) 
s.enter(0, 1, app.redirect,()) 
s.enter(10, 1, app.data_base_update,()) 
s.run() 

我们的目标是快速保持URL重定向用户和延迟的更新后。有没有一个很好的解决方案,以独特的脚本文件做到这一点?

回答

0

通过在后台更新COPY并立即切换并将更新后的副本放入实时副本,可以更好地为您服务。因此,不会等待用户,并且您可以随时进行此操作。你可能最好不要在每个用户请求后10秒(想象一下大量的请求......它会让你的服务器屈服)。您可以安排一个cron脚本或其他自动化任务,每分钟或半小时等等;根据任务的大小,还可以限制CPU利用率。

请注意,由于您正在使用远程数据,因此您的解决方案仍不能确保数据库始终处于最新状态。但不幸的是,这是使用远程数据的代价。如果远程服务器不属于您,请确保不要锤击远程服务器。 =)

+0

好的。如何使用python在web服务器的后台执行自动更新? – Thammas 2011-05-26 22:59:02

+0

@Thammas:使用cron作业(如果您的主机将它作为服务提供,或者您在Linux或Mac计算机上),则使用cron作业(谷歌作为'cron'联机帮助页面;或者一个黑客可能会有一个python进程做你想做的事情,在一个无限的'while True:'循环,做'try:[do stuff]''除了Exception例外:[alert you]''time .sleep(...)'每次 – ninjagecko 2011-05-26 23:05:00

+0

远程服务器是Google服务器,远程文件相对较小(50ko电子表格)。主持人是Kodingen.com。确定循环,但是如何在运行时停止任务? – Thammas 2011-05-26 23:11:07