我有一个小型python脚本,它基本上连接到SQL Server (Micrsoft)数据库,并从那里获取用户,然后将它们同步到另一个mysql数据库,基本上im只是运行查询来检查用户是否存在,如果没有,那么将该用户添加到mysql数据库中。
脚本通常需要大约1分钟才能同步。我要求脚本每5分钟做一次(例如)一次(每5分钟一次同步)。
如何才是建造这座大楼的最佳方法?
我为用户提供了一些测试数据,但是在真实的站点上,有更多的用户,所以我不能保证脚本需要1分钟才能执行,甚至可能需要20分钟。然而,每次脚本执行时有15分钟的间隔对于这个问题来说是理想的.
更新:我有用于servers的连接参数,所以我使用一个小的ubuntu服务器在位于不同服务器上的两个数据库之间进行同步。因此,假设db1 (windows)和db2 (linux)是数据库服务器,我使用s1 (python )、pymssql和mysql python模块进行同步。
问候
发布于 2015-07-13 21:54:20
我不确定cron是否适合这份工作。在我看来,如果您让它每15分钟运行一次,但有时同步需要20分钟,您可以同时运行多个进程,并且可能会发生冲突。
如果驱动力是变量执行时间之间的恒定等待时间,那么您可能需要一个具有等待的持续运行的进程。
def main():
loopInt = 0
while(loopInt < 10000):
synchDatabase()
loopInt += 1
print("call #" + str(loopInt))
time.sleep(300) #sleep 5 minutes
main()(显然不是连续的,而是长时间运行的)您可以将while的结果设置为true,并且它将是连续的。(注释掉loopInt += 1)
编辑以添加:请参阅有关监视进程的注释,因为您不希望脚本挂起或崩溃,并且您不知道它。
发布于 2015-07-13 22:04:53
您可能希望使用一个处理队列的系统,例如RabbitMQ,并使用芹菜作为python接口来实现它。使用芹菜,您可以将任务(如执行脚本)添加到队列中,或者运行在给定间隔后执行任务的计划(就像cron一样)。
https://stackoverflow.com/questions/31394010
复制相似问题