Kivy Clock独自停留

时间:2018-02-16 16:25:25

标签: python kivy

我有一个简单的OSD应用程序用python和kivy制作,在树莓上运行。它只是启动时钟,定期从数据库中提取数据并更新Label.text ...

import kivy
kivy.require('1.10.1')

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.clock import Clock
import MySQLdb

class OSDBoxLayout(BoxLayout):

    def __init__(self, **kwargs):
        super(BoxLayout, self).__init__(**kwargs)
        Clock.schedule_interval(self.update_stats, 20)
        Clock.schedule_once(self.update_stats, 0.1)

    def update_stats(self, *args):
        try:
            self.active = []
            self.db = MySQLdb.connect(<DB connect info here>)

            self.cursor = self.db.cursor()
            self.cursor.execute('SET NAMES utf8;')
            self.cursor.execute('SET CHARACTER SET utf8;')
            self.cursor.execute('SET character_set_connection=utf8;')
            self.cursor.execute('SELECT domain FROM domain_info')

            self.total_domains = self.cursor.rowcount

            self.cursor.execute('SELECT domain FROM domain_list WHERE checked="" OR checked="Update"')

            self.for_update_domains = self.cursor.rowcount

            self.db.close()

            self.ids.marked_update.text=str(self.for_update_domains)

        except:
            pass


class osdApp(App):
    def build(self):
        self.title = 'OSD'
        return OSDBoxLayout()


if __name__ == '__main__':
    osdApp().run()

Evrything工作正常,有一段时间......但是经过一段时间它停止了...应用程序没有崩溃,它仍然显示在LCD上...但更新不再执行...我需要杀死它然后重新开始。 kivy日志没有错误。

我怀疑时钟刚刚挂起,或者有一些默认的到期时间?

1 个答案:

答案 0 :(得分:0)

好的问题是SBC(raspberry)定期切换VPN连接,导致连接到MYSQL挂起,因此需要将self.db.query(&#39; SET GLOBAL connect_timeout = 20&#39;)设置为一些小的时间来连接...(或在我的情况下停止切换VPN)它的运行正常超过24小时! :)