首页 > 解决方案 > 实例化重复时如何替换现有的Python线程?

问题描述

在 Flask 应用程序上,我有一个用于通过以下方式调用 python 线程的 URL 路由:

@mod.route('/api/start-zmq-listener')
def startZMQListener():
    try:
        # get new user profile
        userProfile = user.findUser('test')

        thread = threading.Thread(target=enableZMQ, kwargs={
            'username': userProfile['username'],
            'userEmail': userProfile['email'],
            'userPhone': userProfile['phone'],
            'notifications': userProfile['notifications']
        })

        thread.daemon = True
        thread.start()
        print (threading.enumerate())

        return success_response('ok')

    except Exception as e:
        return error_response(e) 

这会调用“enableZMQ”函数:

def enableZMQ(username, userEmail, userPhone, notifications):

    while True:
        etc... 

我希望现有的“enableZMQ”while 循环(作为守护程序运行)在每次调用时使用新的 userProfile 信息进行更新。但是,当我将“enableZMQ()”放在“startZMQListener()”路由中时,它只会创建一个副本,并且它们都同时运行,这会使事情变得混乱。

关于如何处理这个问题的任何想法?

标签: pythonmultithreadingflaskpyzmq

解决方案


推荐阅读