Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解决';请求此服务器无法理解';错误?_Python_Multithreading_Flask - Fatal编程技术网

Python 如何解决';请求此服务器无法理解';错误?

Python 如何解决';请求此服务器无法理解';错误?,python,multithreading,flask,Python,Multithreading,Flask,我用Flask构建了一个API,在用postman测试它时不断出现错误 我只是在添加线程以便在将数据返回给postman后可以继续运行scraper时才开始出现此错误,现在我不确定如何克服此问题 我的代码如下所示: from threading import Thread from flask import Flask application = Flask(__name__) class Compute(Thread): def __init__(self, request):

我用Flask构建了一个API,在用postman测试它时不断出现错误

我只是在添加线程以便在将数据返回给postman后可以继续运行scraper时才开始出现此错误,现在我不确定如何克服此问题

我的代码如下所示:

from threading import Thread
from flask import Flask

application = Flask(__name__)

class Compute(Thread):
    def __init__(self, request):
        print("init")
        Thread.__init__(self)
        self.request = request

    def run(self):
        print("RUN")
        command = './webscraper.py -us "{user}" -p "{password}" -url "{url}"'.format(**self.request.json)
        output = subprocess.call(['bash','-c', command])
        print("done")

@application.route('/scraper/run', methods=['POST'])
def init_scrape():
    thread_a = Compute(request.__copy__())
    thread_a.start()
    return jsonify({'Scraping this site: ': request.json["url"]}), 201

if __name__ == '__main__':
    application.run(host="0.0.0.0", port="8080")

我的帖子数据只是一个站点url和登录到它的详细信息,看起来像这样

data = {

{
    "user":"username",
    "password":"password",
    "url":"www.mysite.com/"

}
如果我与邮递员一起向
localhost:8080/scraper/run
发出POST请求,我会收到以下错误:

init
RUN
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "api_app.py", line 19, in run
    command = './portal_scrape.py -us "{user}" -p "{password}" -start {start}  -end {end} -fav "{favourite}" -url "{url}"'.format(**self.request.json)
  File "/home/connor/Desktop/portal_dl/venv36/lib/python3.6/site-packages/flask/wrappers.py", line 47, in json
    return self.get_json()
  File "/home/connor/Desktop/portal_dl/venv36/lib/python3.6/site-packages/flask/wrappers.py", line 71, in get_json
    data = self._get_data_for_json(cache=cache)
  File "/home/connor/Desktop/portal_dl/venv36/lib/python3.6/site-packages/flask/wrappers.py", line 50, in _get_data_for_json
    return self.get_data(cache=cache)
  File "/home/connor/Desktop/portal_dl/venv36/lib/python3.6/site-packages/werkzeug/wrappers.py", line 514, in get_data
    rv = self.stream.read()
  File "/home/connor/Desktop/portal_dl/venv36/lib/python3.6/site-packages/werkzeug/wsgi.py", line 1307, in read
    return self.on_disconnect()
  File "/home/connor/Desktop/portal_dl/venv36/lib/python3.6/site-packages/werkzeug/wsgi.py", line 1275, in on_disconnect
    raise ClientDisconnected()
werkzeug.exceptions.ClientDisconnected: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.



我正在发送我在没有线程的情况下工作时使用的同一个POST请求检查日志,在我们的函数中添加打印内容,并让我们知道发生了什么事情。如果包含您要求邮递员发送的请求的详细信息,我也会很有帮助。更新了我的帖子,并提供了两个建议检查日志,在我们的功能中添加打印内容,让我们知道什么是Happenst,包括您要求邮递员发送的请求的详细信息也会有所帮助。更新了我的帖子,并提供了这两个建议