我有一个简单的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日志没有错误。
我怀疑时钟刚刚挂起,或者有一些默认的到期时间?
答案 0 :(得分:0)
好的问题是SBC(raspberry)定期切换VPN连接,导致连接到MYSQL挂起,因此需要将self.db.query(&#39; SET GLOBAL connect_timeout = 20&#39;)设置为一些小的时间来连接...(或在我的情况下停止切换VPN)它的运行正常超过24小时! :)