您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Flask JSON请求为None

5b51 2022/1/14 8:22:01 python 字数 3677 阅读 530 来源 www.jb51.cc/python

我正在开发我的第一个Flask应用程序(版本0.10.1),以及我的第一个Python(版本3.5)应用程序.其中一件需要像这样工作:>提交表格>运行Celery任务(进行一些第三方API调用)>当Celery任务的API调用完成后,将JSON帖子发送到应用程序中的另一个URL>获取该JSON数据并使用它更新数据库记录这是Celery

概述

我正在开发我的第一个Flask应用程序(版本0.10.1),以及我的第一个Python(版本3.5)应用程序.其中一件需要像这样工作:

>提交表格
>运行Celery任务(进行一些第三方API调用)
>当Celery任务的API调用完成后,将JSON帖子发送到应用程序中的另一个URL
>获取该JSON数据并使用它更新数据库记录

这是Celery任务的相关部分:

if not response['errors']: # response comes from the Salesforce API call
    # do something to notify that the task was finished successfully
    message = {'flask_id' : flask_id,'sf_id' : response['id']}
    message = json.dumps(message)
    print('call endpoint Now and update it')
    res = requests.post('http://0.0.0.0:5000/transaction_result/',json=message)

这是它调用的端点:

@app.route('/transaction_result/',methods=['POST'])
def transaction_result():
    result = jsonify(request.get_json(force=True))
    print(result.flask_id)
    return result.flask_id

到目前为止,我只是想获取数据并打印ID,之后我会担心数据库.

我得到的错误是:requests.exceptions.ConnectionError:无:使用url超出最大重试次数:/ transaction_result /(由None引起)

我的阅读表明我的数据可能不会以JSON的形式出现,因此结果上的Force = True,但即使这样也似乎不起作用.我也尝试在CocoaRestClient中使用application-json的Content-Type标头执行相同的请求,并得到相同的结果.

因为这两个尝试都破坏了,我无法判断我的问题是在请求中还是在尝试解析响应时.

所以,最终代码应如下所示:

@app.route('/transaction_result/',methods=['POST'])
def transaction_result():
    result = request.get_json()
    return result['flask_id']

当您使用REST客户端测试路由时,您绝对正确.它通过减少相关部件来简化测试过程.从烧瓶应用程序向同一个应用程序发送请求期间的一个众所周知的问题是在开发服务器下运行此应用程序只有一个线程.在这种情况下,请求将始终被内部请求阻止,因为当前线程正在为最外层请求提供服务而无法处理内部请求.但是,由于您是从Celery任务发送请求,因此不太可能是您的方案.

UPD:最后,最后一个原因是IP地址0.0.0.0.将其更改为真实解决了问题.

总结

以上是编程之家为你收集整理的python – Flask JSON请求为None全部内容,希望文章能够帮你解决python – Flask JSON请求为None所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶