2009-11-02 5 views
0

나는이 제조법을 사용하고 있습니다 : http://code.activestate.com/recipes/278731/ 우분투 서버에. 잠자기 중에 내 파이썬 데몬이 내 CPU를 모두 먹어 버리는 이유는 무엇입니까?

나는 데몬 예를 다음과 같이합니다

class MyDaemon(Daemon): 
    def run(self): 
     while True: 
      try:  
       do_my_data_processing() 
      except MySQLdb.OperationalError: 
       # Sleep an extra 30 seconds if database is away. 
       time.sleep(30) 
      time.sleep(30) 

문제는 그 데몬을자는 것은 거의 가능한 모든 CPU 파워를 차지 동안에도.

내가 뭘 잘못하고 있니?

+2

.... – jldupont

+0

들여 쓰기가 잘못되었습니다 -이 게시의 형식 문제 일 뿐이며 time.sleep (30)이 while 루프 외부에있을 수 있습니까? –

+0

들여 쓰기가 고정되어 있어야합니다. 데몬이 자고있는 것만 큼 확실합니다. – Hobhouse

답변

3

게시 된 코드가 올바르게 표시됩니다. 귀하의 오류는 다른 곳에 있어야합니다. print 문을 루프에 넣어 잠자기 상태인지 확인하십시오.

0

데몬이 잠자기 상태가 아니 었음이 밝혀졌습니다. 매 턴마다 30 초간 자지 않고 반복했다. 아론 감사합니다.

나는이 내 코드를 변경하여 고정 : 데몬이 효과적으로 자고하고 "do_my_data_processing()"함수에 갇혀되지 않은 가정

class MyDaemon(Daemon): 
    def run(self): 
     while True: 
      try:  
       do_my_data_processing() 
       time.sleep(30) 
      except MySQLdb.OperationalError: 
       # Sleep an extra 30 seconds if database is away. 
       time.sleep(30) 
+0

거대한 이상한 ... – aehlke