创建一个定时器计数器 - Python的

问题描述:

我使用的Django的项目,我有以下方法:创建一个定时器计数器 - Python的

TIMEOUT = 10 # defines the timeout in sec 
def read_cluster_log(proc, cluster): 
    logs = "" 
    while True: 
     line = proc.stdout.readline() 
     if not line: 
      break 
     logging.info(line) 
     # here I need to add a buffer: 
     # if the 'counter' is equal to 10 sec 
     # append logs to the database and reset the timer to 0 
     # else, keep appending. 
     logs += line 
    cluster_log = ClusterLog(cluster=cluster, log=logs) 
    cluster_log.save() 
    return cluster_log 

截至目前该功能捕捉整个输出,并将其保存到数据库中。 logBinaryField。我需要做的是设置一个计时器,该计时器的运行范围为0到TIMEOUT,然后将当前日志附加到log字段中,该cluster。定时器重置为0,并一直持续到程序结束。 这里的想法是当用户创建一个Hadoop群集时,使输出从网站可用。但是,这一部分有点棘手。有人可以帮我吗? 该Django应用程序正在运行的数据库是MySQL

+0

我不知道,但我认为你需要使用像芹菜(http://celery.readthedocs.org/en/latest/)这里 – ruddra 2014-09-25 05:58:33

尝试sleep(n)它会睡n秒。

import time 

TIMEOUT = 10 # defines the timeout in sec 
def read_cluster_log(proc, cluster): 
    logs = "" 
    while True: 
     line = proc.stdout.readline() 
     if not line: 
      break 
     logging.info(line) 

     #changed here 
     time.sleep(TIMEOUT) #sleeps for 10 seconds 

     logs += line 
    cluster_log = ClusterLog(cluster=cluster, log=logs) 
    cluster_log.save() 
    return cluster_log 
+0

我不认为这会工作:-( – cybertextron 2014-09-25 04:46:39

+0

你是否得到任何错误? – nu11p01n73R 2014-09-25 04:58:01

+0

逻辑是完全错误的 – cybertextron 2014-09-25 05:20:50