ValueError: операция ввода-вывода для закрытого файла python flask - PullRequest
0 голосов
/ 05 февраля 2020

У меня проблема с кодом python. В основном потоке я создаю новый поток, содержащий flask API с: thread = Thread(target=app.run, kwargs={'host':'127.0.0.1', 'port':5000, 'debug':False, 'use_reloader':False})

, затем в основном потоке у меня есть i, в то время как l oop ожидает команды от терминала с:

while  True:
    command = input("> ")

проблема в том, что после некоторых команд я получаю:

File "run.py", line 44, in cli_app
command = input("> ")

ValueError: операция ввода-вывода для закрытого файла. хотя мой клиент все еще включен, и я могу общаться с других терминалов, этот клиент больше не может создавать команду. все, что я нашел, было об открытии CSV-файлов, вот почему я спрашиваю. спасибо заранее.

1 Ответ

0 голосов
/ 05 февраля 2020

Вы пытаетесь создать терминальные команды в flask, верно? поэтому у flask есть декораторы, чтобы сделать это проще:

import click
from flask import Flask

app = Flask(__name__)

@app.cli.command("create-user")
@click.argument("name")
def create_user(name):
    #logic
    return

И для запуска этой команды вам нужно всего лишь написать эту команду в терминале flask create-user admin, первый аргумент - это функция, а второй - это значение (не забудьте использовать в этом, вам нужно установить FLASK_APP), для полной do c посмотрите это flask do c

Другой способ, если вы Используете несколько серверов на одном хосте, создайте маршрут, подобный командам, и для вызова этой команды получите доступ к URL.

@app.route("/user")
def create_user():
    name= request.args.get('name')
    #logic
    return

И вызовите его по URL localhost:5001/user?name=Thomas

И создайте скрипт запускать каждый сервер в фоновом режиме (я не использую сейчас, если вы используете gunicorn, поэтому я использую vallina thread pool`, а я использую linux терминал)

nohup python server1/main.py &
nohup python server2/main.py &
nohup python server3/main.py &
nohup python server4/main.py &
nohup python server5/main.py &
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...