使用rabitmq

时间:2018-12-15 17:22:36

标签: python-3.x multithreading rabbitmq swagger connexion

最近,我尝试使用 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应用程序吗? 此外,很抱歉在我的问题中写错了。

0 个答案:

没有答案