最近,我尝试使用 swagger 和 connexion 和 rabitmq 制作多线程python代码。 但是我不明白如何使用queue(Rabitmq)来制作多线程应用程序。 这是我的主班.py :
import connexion
import logging
import rabitmq
def request(domain, number):
json = {"domain": domain, "number": number}
return rabitmq.queue(json)
logging.basicConfig(level=logging.INFO)
app = connexion.App(__name__)
app.add_api('swagger.yaml')
# set the WSGI application callable to allow using uWSGI:
# uwsgi --http :8080 -w app
application = app.app
if __name__ == '__main__':
# run our standalone gevent server
app.run(port=5000, server='gevent')
这是我的 rabitmq.py :
from queue import Queue
import send
import SimilarURLs
import threading
def queue(json):
print(json)
data = []
q = Queue()
for data in json:
q.put(data)
t = threading.Thread(target=send.start(json), args=(q, data))
t.daemon = True
t.start()
q.join()
def take(json):
returns = SimilarURLs.start(data=json)
return returns
这是我的 send.py 文件,我使用pika和rabitmq处理请求:
import pika
import rabitmq
json = ''
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
def start(json):
channel.queue_declare(queue='req')
channel.basic_publish(exchange='',
routing_key='req',
body=rabitmq.take(json=json))
print(" [x] Sent {}".format(rabitmq.take(json=json)))
channel.start_consuming()
在这三个文件中,我收到用户的请求,然后将其传递给rabitmq.py,在rabitmq.py中,此请求将传递给send.py,以创建多线程队列,但是每次我运行此代码时,我的请求丢失了,我什么也没收到。 除了使用 rabitmq 作为队列处理程序之外,没有人知道如何使用 swagger 和 connexion 制作多线程python应用程序吗? 此外,很抱歉在我的问题中写错了。