在应用程序上下文之外进行烧瓶和工作

时间:2018-08-09 17:30:37

标签: python python-3.x multithreading flask

我正在测试一个简单的slack命令,该命令应该在调用时返回响应,然后启动一个新线程,在该线程中它将计算新响应并将其发回。但是,似乎没有办法在线程内调用jsonify,因为如果这样做,它会抛出:RuntimeError: Working outside of application context.

from flask import abort, Flask, jsonify, request
import requests
import json
from dateutil.parser import parse
from threading import Thread


def backgroundworker(somedata,response_url):

    payload = jsonify(
                  response_type='in_channel',
                  text="test"
              )

    requests.post(response_url,data=json.dumps(payload))    

@app.route('/appmethodaddress',methods=['POST','GET'])
def receptionist():

    response_url = request.form.get("response_url")

    somedata = {}

    thr = Thread(target=backgroundworker, args=[somedata,response_url])
    thr.start()

    return jsonify(message= "working on your request")  

是否有一种简单的方法可以在jsonify内部调用backgroundworker

1 个答案:

答案 0 :(得分:0)

如果必须使用它制作一个json,请使用json.dumps()方法(https://kite.com/python/docs/json.dumps)。