按Ctrl+C一次后,Flask服务器不会停止。需要按两下

2024-10-09 01:24:20 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我使用flask和kafka来创建一个web应用程序,允许用户提交某些作业。我创建了多个线程,每个线程处理自己的请求。我面临的问题是kafka生产者没有向消费者发送消息。当我在flask服务器上按CtRl+C时,只有kafka producer才会发送消息。当我再次按Ctrl+C时,flask服务器停止(需要按两次才能完全停止)。我为这个问题绞尽脑汁很久了。需要帮助

我在app.py中的主要方法如下所示,我需要在启动服务器后立即启动一个线程,并使用BackgroundScheduler执行一些后台任务:

if __name__ == "__main__":   
    notification_thread = threading.Thread(target=minimization_notification,args = ())
    notification_thread.start()

    scheduler = BackgroundScheduler(daemon=True,job_defaults=job_defaults)
    scheduler.add_job(middleware.generate_graphs, 'interval', minutes=10)
    scheduler.add_job(middleware.copy_db, 'interval', minutes=5)
    scheduler.start()

    app.jinja_env.cache = {}
    hostip = socket.gethostbyname(socket.gethostname())
    app.run(debug=False, port=5000, threaded=True, host=hostip,use_reloader=False)

Tags: kafka服务器addtrueapp消息flaskjob

热门问题