当前位置: 首页 > 知识库问答 >
问题:

为什么我运行烧瓶应用程序时在Postman上收到500个内部服务器错误

孔彭祖
2023-03-14

亲爱的,

我不熟悉Python和flask。在Spyder上运行以下代码时,会收到以下消息:

runfile('C:/Users/...../Desktop/Folders/..../BlockChain/Create Blockchain/Module 1 - Create a Blockchain/blockchain.py', wdir='C:/Users/...../Desktop/Folders/..../BlockChain/Create Blockchain/Module 1 - Create a Blockchain')
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 

但是当我想跑步的时候http://127.0.0.1:5000/get_chain在《邮差》一书中,我得到以下信息:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>

我完全搞不懂为什么?这是我的代码:

import datetime
import hashlib
import json
from flask import Flask, jsonify, request

第1部分-构建区块链

class Blockchain:

    def __init__(self):
        self.chain = []
        self.create_block(proof = 1, previous_hash = '0')

    def create_block(self, proof, previous_hash):
        block = {'index': len(self.chain) + 1,
                 'timestamp': str(datetime.datetime.now()),
                 'proof': proof,
                 'previous_hash': previous_hash}
        self.chain.append(block)
        return block

    def get_previous_block(self):
        return self.chain[-1]

    def proof_of_work(self, previous_proof):
        new_proof = 1
        check_proof = False
        while check_proof is False:
            hash_operation = hashlib.sha256(str(new_proof**2 - previous_proof**2).encode()).hexdigest()
            if hash_operation[:4] == '0000':
                check_proof = True
            else:
                new_proof += 1
        return new_proof

    def hash(self, block):
        encoded_block = json.dumps(block, sort_keys = True).encode()
        return hashlib.sha256(encoded_block).hexdigest()

    def is_chain_valid(self, chain):
        previous_block = chain[0]
        block_index = 1
        while block_index < len(chain):
            block = chain[block_index]
            if block['previous_hash'] != self.hash(previous_block):
                return False
            previous_proof = previous_block['proof']
            proof = block['proof']
            hash_operation = hashlib.sha256(str(proof**2 - previous_proof**2).encode()).hexdigest()
            if hash_operation[:4] != '0000':
                return False
            previous_block = block
            block_index += 1
        return True

# Creating a Web App

    app = Flask(__name__)

# Creating a Blockchain

    blockchain = Blockchain()

# Mining a new block

    @app.route('/mine_block', methods = ['GET'])

    def mine_block():
        previous_block = blockchain.get_previous_block()
        previous_proof = previous_block['proof']
        proof = blockchain.proof_of_work(previous_proof)
        previous_hash = blockchain.hash(previous_block)
        block = blockchain.create_block(proof, previous_hash)
        response = {'message': 'Congratulations, you just mined a block!',
                    'index': block['index'],
                    'timestamp': block['timestamp'],
                    'proof': block['proof'],
                    'previous_hash': block['previous_hash']}
        return jsonify(response), 200

# Getting the full Blockchain

    @app.route('/get_chain', methods = ['GET'])
    def get_chain():
        response = {'chain': blockchain.chain,
                    'length': len(blockchain.chain)}
        return jsonify(response), 200

# Checking if the Blockchain is valid

    @app.route('/is_valid', methods = ['GET'])
    def is_valid():
        is_valid = blockchain.is_chain_valid(blockchain.chain)
        if is_valid:
            response = {'message': 'All good. The Blockchain is valid.'}
        else:
            response = {'message': 'Houston, we have a problem. The Blockchain is not valid.'}
        return jsonify(response), 200


# Running the app

    app.run(host='0.0.0.0', port=5000)

共有2个答案

熊朝
2023-03-14

烧瓶与此不兼容。需要升级我们的烧瓶。如何操作:

>

步骤2:写入命令conda install flask=1.0.0,现在您的flask将得到更新。。

  • 步骤1:在Anaconda提示符中安装werkzeug=0.16.1

重启蟒蛇。

关飞翼
2023-03-14
'is_xhr' method has been deprecated & removed, So you need to upgrade your Flask version

打开蟒蛇提示符并输入

pip安装--升级Flask

然后重启你的IDE

 类似资料:
  • 我在Heroku和Flask上发现一个500内部服务器错误。我的应用程序在localhost上运行得非常好http://127.0.0.1:5000/.尝试广泛搜索堆栈溢出,但未找到答案。 这是heroku日志 这是我的一些代码 这是我的文件树 甚至尝试了,但它不起作用。请帮助。

  • 我希望能够运行我的破折号应用程序从我的烧瓶应用程序,当我去一个特定的网址/破折号。然而,我得到以下错误。TypeError:视图函数没有返回有效的响应。该函数要么返回无,要么结束时没有返回语句。' flaskapp.py dashapp。派克 如果我对我的flaskapp.py做以下更改, 我得到了以下错误,AttributeError:“非类型”对象没有属性“遍历”

  • 通过postman从API到数据库的post请求给了我以下响应:{“message”:“无效的对象名‘Accounts’。”} 这些是我的C#代码,我不知道我做错了什么或我错过了什么。请帮助。 > 帐户控制器。 使用AutoMapper;使用Microsoft。AspNetCore。Http;使用Microsoft。AspNetCore。Mvc;使用系统;使用系统。集合。通用;使用非洲生物医学测试

  • 我正在为一个web使用flask构建一个api,我已经有了一个数据库,GET请求可以工作,但当我尝试发布时,它会给我这个错误 500内部服务器错误 这是我写的代码 这是我在邮递员上添加的请求 我还使用了一个本地服务器,我查看了其他链接,每个人都在询问日志,如果我没有错,我想我可以从 看法 这是日志的截图:(我想) 到底是什么问题我不明白 编辑:这是完整的代码: 第二次编辑:控制台日志 添加def错

  • 我试图将来自一个非常简单的flask应用程序的应用程序日志消息保存在日志文件中。当我使用嵌入式Flask服务器运行应用程序时,这项功能完美无瑕,但在gUnicorn中运行时,它根本不起作用,基本上,运行gUnicorn时,不会将任何应用程序输出重定向到日志文件(我的Flask应用程序中指定的日志文件)或标准输出。 也就是说,这是我的烧瓶应用程序: 现在,如果我以以下方式启动应用程序: 我得到预期的

  • 我正在使用flask(1.1.1)和spyder(版本=4.1.4)构建区块链。我运行了整个代码,然后去找postman以获得get请求的结果(get\u chain),结果正常。但当我跑的时候http://127.0.0.1:/5000/mine_block.It显示500内部服务器错误。这是完整代码截图完整代码截图mine block Get requestresults