menu Echo Craft
使用web.py时程序执行两遍的解决方法
155 浏览 | 2020 03月19日 | 分类:踩坑记录 | 标签:web,python

最近用web.py写一个程序:

#  -*- coding: utf-8 -*-

import Adafruit_DHT
import web
import time


#dht_addr="null"
#while dht_addr == "null":
#dht_addr = input("please enter your addres:")
#print(dht_addr+",okay")

urls = (
    '/dht', 'dht_read'
)

app = web.application(urls, globals())

class dht_read:
    def GET(self):
        global dht_addr
        try:
            temp = open("/sys/devices/platform/"+dht_addr+"/iio:device0/in_temp_input","r").read()
            humi = open("/sys/devices/platform/"+dht_addr+"/iio:device0/in_humidityrelative_input","r").read()
            string = "\ntemp="+str(int(temp)/1000.0)+"\nhumi="+str(int(humi)/1000.0)+"%"
        except:
            string = "\nFailed\nPlease check the addres or refresh page!"
        return str(time.ctime())+","+string

if __name__ == "__main__":
    dht_addr = input("please enter your addres:")
    #global dht_addr
    app.run()

发现在import以后、main以前的部分会自己执行两次。
但是如果给两遍的语句(给变量赋值那个)加上main,就不会两遍,但会在其他位置无法访问变量。
查谷歌发现是自动重载的问题。
解决方法: 在创建app之前加上
web.config.debug = False
取消debug模式。

类似地,flask也有这个问题。方法也是关闭debug模式:app.run(use_reloader=False)

发表评论

email
web
captcha

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!