0

我正在尝试构建一个带有 python 后端和 React 前端的人工智能国际象棋机器人。当我在本地运行它时,它工作正常,但是在 Heroku 上免费部署时,我收到以下错误消息:

结果 = engine.play(board, chess.engine.Limit(time=0.1)) chess.engine.EngineTerminatedError: 引擎进程意外死亡(退出代码:0)

linux stockfish 文件在 Heroku bash 上运行良好。

这是我的代码:

import chess
import chess.engine
from flask import Flask
import os
import stat
import sys

app = Flask(__name__)


@app.route('/')

def index():
    board = chess.Board()
    if sys.platform == "linux":
        os.chmod("./stockfish_20011801_x64", stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
        engine = chess.engine.SimpleEngine.popen_uci("./stockfish_20011801_x64")
    else:
        engine = chess.engine.SimpleEngine.popen_uci("./stockfish_20011801_x64.exe")
    result = engine.play(board, chess.engine.Limit(time=3))
    board.push(result.move)
    return board.fen()

以下是部分日志:

DEBUG:chess.engine:<UciProtocol (pid=10)>: >> uciok

DEBUG:chess.engine:<UciProtocol (pid=10)>: << ucinewgame

DEBUG:chess.engine:<UciProtocol (pid=10)>: << isready

DEBUG:chess.engine:<UciProtocol (pid=10)>: 进程退出

DEBUG:chess.engine:<UciProtocol (pid=10)>:连接丢失(退出代码:0,错误:无)

chess.engine.EngineTerminatedError:引擎进程意外死亡(退出代码:0)

4

1 回答 1

0

当我卸载 eventlet 时,它确实有效。我试图卸载它,因为它与 asyncio 非常相似,它是 python-chess 的一个依赖项。

于 2020-09-09T08:50:47.130 回答