我的一般python知识无法按照要求运行以下代码段。如下所示,函数侦听器正在作为线程运行并侦听ativemq队列(STOMP)中的消息。当消息到达时,只需在控制台上打印即可。 我的要求是,我需要在类变量之外访问该消息,并对每条消息进行一些操作,就像我在do_something函数中编写的一样,然后将其传递给Flask以在webpage(api)上显示它-请帮助。 我已经尝试了全局,队列和许多其他事情,但没有成功。
import time
import sys
import stomp
import threading
import json
from flask import Flask, request, jsonify
data=[]
file = []
final = {}
temp = {}
search = 'File'
app = Flask(__name__)
@app.route('/', methods=['GET'])
def test():
global search,queue
'''
while not queue.empty():
mess = queue.get()
mess=''.join(mess).split('&')
print(mess)
file = list(filter(lambda x: search in x, mess))
if file:
mess.remove(file[0])
for i in mess:
k, v = i.split('=')
temp.update({k: v})
final[file[0]] = temp
print(mess)
return(final)
#do_something(message)
'''
return("Queue test")
def do_something(message):
global data,file,final,temp,search
#print('thanks for your message %s' %message)
#message=message.split('&')
message=''.join(message).split('&')
data=message
file = list(filter(lambda x: search in x, data))
if file:
data.remove(file[0])
for i in data:
k, v = i.split('=')
temp.update({k: v})
final[file[0]] = temp
print(final)
class MyListener(object):
def on_error(self, headers, message):
print('received an error %s' % message)
def on_message(self, headers, message):
print('received a message %s' % message)
do_something(message)
def listener():
global messages
conn = stomp.Connection(host_and_ports=[('localhost', 61613)])
lst = MyListener()
conn.set_listener('',lst)
conn.start()
conn.connect("admin","admin",wait=True)
conn.subscribe(destination='test', id = '1', ack='auto')
while True:
time.sleep(30)
if __name__ == "__main__":
condition = threading.Condition()
t1 = threading.Thread(target=listener)
t1.start()
app.run(host = '0.0.0.0',port=5000,debug=True)