当我打开表单时,我的应用程序生成一个UUID,在提交时,它对我的api进行POST调用,传递此值,从而在我的应用程序中创建一个具有附加属性的事件。然后,我想调用传递UUID值的events API,这样我的API将返回一个响应,在那里我将能够看到更多属性
我收到一个202状态码,但是在我的GET呼叫的响应中,我没有看到记录。我的猜测是我没有等待响应,但我的印象是python请求将等待,然后执行其余代码
我可以使用邮递员传递与GET调用中相同的值进行调用,然后收到响应
如何确保我的应用程序已等待足够的时间?我已经尝试了sleep(5)
,这应该是足够的时间,但它显示0条记录
import requests, uuid, json, pymysql, datetime, time
from datetime import datetime
from random import randint
from time import strftime, sleep
from flask import Flask, render_template, flash, request, redirect, url_for, jsonify
from wtforms import Form, TextField, TextAreaField, validators, \
StringField, SubmitField
DEBUG = True
app = Flask(__name__)
app.config.from_object(__name__)
app.config['SECRET_KEY'] = 'xxxxxxxxxxxxxxxxx'
class ReusableForm(Form):
###
@app.route('/alert', methods=['GET', 'POST'])
def alert():
form = ReusableForm(request.form)
incident = uuid.uuid4()
time = strftime('%Y-%m-%d %H:%M')
if request.method == 'POST':
impact = request.form['impact']
if form.validate():
write_to_disk(impact)
flash('{} {}'.format(impact))
url = "https://api/v1/"
payload="{\"incident\":\"" + str(incident) + "\", \"Impact\":\"" + str(impact) + "\"}"
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
if response.status_code == 202:
sleep(3)
inc_id = str(incident)
print ("This is the second call")
print (inc_id)
url = "https://api/v1/events/" + inc_id + ",&embed=properties"
print (url)
payload={}
headers = {
'Authorization': 'Basic xxxxxxxxxxxxxxxxxxxxxxxxxx='
}
response = requests.request("GET", url, headers=headers, data=payload)
response_dump = json.dumps(response.text, sort_keys = True, indent = 4, separators = (',', ': '))
print (response_dump)
return redirect(url_for('updated'))
没有足够的声誉来写评论。能否在api中为GET端点添加代码?因为我看到还有一些get参数(顺便说一下,
,&embed=properties
应该更改为?embed=properties
)还有一个建议: 如果使用json关键字参数,则可以将
payload
作为dict传递。它将添加适当的头。因此,您的代码如下所示:另外:不需要向GET请求传递任何
data=payload
相关问题 更多 >
编程相关推荐