You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
40 lines
1.3 KiB
1 year ago
|
from flask import Flask,render_template, request, Response
|
||
|
from faker import Faker
|
||
|
import json, pika
|
||
|
|
||
|
app = Flask(__name__)
|
||
|
|
||
|
def shop_random(n):
|
||
|
fake = Faker(locale='zh_CN')
|
||
|
# 随机生成姓名、商品、价格、地址,并返回一个字典
|
||
|
shop = {"response": "下单成功", "data": {fake.name(): [fake.word(), fake.pyint(), fake.address()] for i in range(n)}}
|
||
|
return shop
|
||
|
|
||
|
def send_queue(data={}):
|
||
|
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
|
||
|
channel = connection.channel()
|
||
|
|
||
|
# 声明一个名为 'message_queue' 的队列
|
||
|
channel.queue_declare(queue='message_queue')
|
||
|
|
||
|
# 将消息发送到队列中
|
||
|
channel.basic_publish(exchange='',
|
||
|
routing_key='message_queue',
|
||
|
body=data)
|
||
|
# 关闭连接
|
||
|
connection.close()
|
||
|
|
||
|
|
||
|
|
||
|
@app.route('/', methods=["GET", "POST"])
|
||
|
def index():
|
||
|
if request.method == 'POST':
|
||
|
num = int(request.form.get('shop', 100))
|
||
|
data = shop_random(num)
|
||
|
json_data = json.dumps(data, ensure_ascii=False) # 设置 ensure_ascii 为 False
|
||
|
send_queue(json_data)
|
||
|
return Response(json_data, content_type='application/json; charset=utf-8')
|
||
|
return render_template("index.html")
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
app.run(host="0.0.0.0",port=80)
|