У меня есть приложение Flask с определенным URL-маршрутом, которое при вызове вызывает функцию внутри процесса через библиотеку потоков.Эта функция содержит цикл True, который внутри имеет запрос к БД.
Та же самая функция может быть вызвана снова, но DB может измениться, что теперь приводит к другому потоку.Однако я не хочу этого, так как это приводит к тому, что поток имеет старые данные.
Мне нужен один поток.
Вот мой нынешний подход:
@mod.route('/api/start-zmq-listener')
def startZMQListener():
try:
thread = threading.Thread(target=enableZMQ, name="enableZMQ", kwargs={
'username': 'test',
'stopFlag': stopFlag
})
thread.start()
return success_response('ok')
except Exception as e:
return error_response(e)
def enableZMQ(username, stopFlag):
if not stopFlag:
context = zmq.Context()
listen_on = 'tcp://' + ENGINE_IP
sock = context.socket(zmq.SUB)
sock.setsockopt(zmq.SUBSCRIBE, b"")
sock.connect(listen_on)
print ('listening on ' + listen_on)
while True:
print MONGODB QUERY
Допустим, «ЗАПРОС MONGODB» каждый раз одинаков, но данные, которые он запрашивает,разные.
Как мне убедиться, что всегда запущен только один процесс, который использует самый последний запрос MongoDB?