为什么我的Python守护进程在睡觉时占用了我所有的CPU?

为什么我的Python守护进程在睡觉时占用了我所有的CPU?,python,cpu,daemon,Python,Cpu,Daemon,我正在使用这个方法:在Ubuntu服务器上 我创建了一个如下的守护进程实例: class MyDaemon(Daemon): def run(self): while True: try: do_my_data_processing() except MySQLdb.OperationalError: # Sleep an extra 30 seco

我正在使用这个方法:在Ubuntu服务器上

我创建了一个如下的守护进程实例:

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电源


我做错了什么?

发布的代码看起来是正确的。你的错误一定在别的地方。将
print
语句放入循环中,以确保它确实处于睡眠状态。

发布的代码看起来是正确的。你的错误一定在别的地方。将
print
语句放入循环中,以确保它确实处于睡眠状态。

结果表明守护进程未处于睡眠状态。它在每一圈之间循环30秒而不睡觉。谢谢你,亚伦

我通过将代码更改为以下内容来修复它:

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)

原来守护进程没有睡觉。它在每一圈之间循环30秒而不睡觉。谢谢你,亚伦

我通过将代码更改为以下内容来修复它:

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)

…假设守护进程处于有效睡眠状态,并且没有卡在“do_my_data_processing()”函数中。您的缩进看起来是错误的-这只是本文中的格式问题,还是您的时间问题。睡眠(30)可能在while循环之外?修复了缩进,应该立即修复。我很确定守护进程正在睡眠……假设守护进程正在有效睡眠,并且没有卡在“do_my_data_processing()”函数中。您的缩进看起来有问题-这只是本文中的格式问题,还是您的时间问题。睡眠(30)可能在while循环之外?修复了缩进,现在应该是。我确信守护进程正在睡觉。