Недавно я попытался создать многопоточный код Python, используя swagger и connexion и rabitmq .Но я не могу понять, как я могу создать многопоточное приложение помимо очереди (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 для создания многопоточной очереди, но каждый раз, когда я запускаю этот код, мои запросы теряются, и я ничего не получаю.Кто-нибудь знает, как я могу сделать многопоточное приложение на Python, используя swagger и connexion , кроме использования rabitmq в качестве обработчика очереди? Кроме того, я прошу прощения за ошибки в моем вопросе.