Python While循环time.sleep()而不重新加载页面

Python While循环time.sleep()而不重新加载页面,python,html,flask,mqtt,Python,Html,Flask,Mqtt,我在一个网站上为我的树莓皮上的一些水泵设置计时器。当我输入希望泵开启的秒数时,我向pi发送mqtt消息,以在所需时间内开启泵。但是,如果在满足条件之前不睡觉就执行此操作,则会向pi发送过多的mqtt消息。当我使用代码中的sleep执行此操作时,我的网站将在我输入的时间内重新加载整个文件。有没有人有更有效的方法来解决这个问题 @app.route("/pump1_timer", methods=["GET", "POST"]) def pump1_timer(): i

我在一个网站上为我的树莓皮上的一些水泵设置计时器。当我输入希望泵开启的秒数时,我向pi发送mqtt消息,以在所需时间内开启泵。但是,如果在满足条件之前不睡觉就执行此操作,则会向pi发送过多的mqtt消息。当我使用代码中的sleep执行此操作时,我的网站将在我输入的时间内重新加载整个文件。有没有人有更有效的方法来解决这个问题

   @app.route("/pump1_timer", methods=["GET", "POST"])
    def pump1_timer():
        if request.method == "POST":
            seconds = float(request.form.get('pump1_timer'))
            t_end = time.time() + (seconds)
            while time.time() <= t_end:
                publish.single("MY TOPIC", "pump1:on", hostname="MY IP")
                time.sleep(seconds)
            else:
                publish.single("MY TOPIC", "pump1:off", hostname="MY IP")
            return main1.html 
@app.route(“/pump1\u timer”,方法=[“GET”,“POST”])
def泵1_定时器():
如果request.method==“POST”:
秒=浮动(request.form.get('pump1\u timer'))
t_end=time.time()+(秒)

而time.time()您的
输入
需要
名称
属性,而不是表单:

<input name="pump1_timer" ... />

我是编程新手,在提出这个问题时没有意识到异步请求的美妙之处。对于那些看到这篇文章的人和编程新手,可以在项目前端使用类似javascript的语言发出这些请求,这样在代码运行时页面就不会重新加载和暂停……如果代码使用time.sleep(),这一点尤其有用。这不是使用flask和内置的html表单请求方法向客户机和服务器发送信息,也不是从客户机和服务器发送信息

因此,我使用这个AJAX(javascript库)post方法来发送数据。在javascript中还有其他方法可以做到这一点,但我使用这个方法是为了简单。这可以在函数内部使用,以便在单击按钮时发送

$.post('/pump_timer', $('#pump1_timer').val().toString())