Просто вернуть некоторые (уценки) строку в колбе:Я не могу достичь URL с колбой вызывающего pandoc (ошибкой ResponseTimeOut)
@app.route("/raw/", methods=['GET'])
def sometext():
return "This is an **example**"
## Main procedure
if __name__ == "__main__":
app.run(debug=True, port=8000)
Если вы звоните pandoc непосредственно (pandoc http://localhost:8000/raw
) или с subprocess
, вы не получите никаких проблем:
import subprocess, os
url = "http://localhost:8000/raw"
pbody = subprocess.run(["pandoc", url], check=True, stdout=subprocess.PIPE)
print(pbody.stdout.decode())
Но если вы звоните pandoc в методе колба:
@app.route("/get", methods=['GET'])
def index():
url = "{}".format(url_for('sometext', _external=True))
pbody = subprocess.run(["pandoc", url], check=True, stdout=subprocess.PIPE, universal_newlines=True)
print("***Error: ", pbody.stderr)
return pbody.stdout
Затем, когда вы получите доступ к http://localhost:8000/get
вы получите ошибку Responsetimeout из pandoc:
pandoc: HttpExceptionRequest Request {
host = "localhost"
port = 8000
secure = False
requestHeaders = []
path = "/raw/"
queryString = ""
method = "GET"
proxy = Nothing
rawBody = False
redirectCount = 10
responseTimeout = ResponseTimeoutDefault
requestVersion = HTTP/1.1
}
ResponseTimeout
Ссылка: url_for in flask API
Или создать реальное приложение WSGI. Как [здесь] (http://flask.pocoo.org/docs/0.12/deploying/wsgi-standalone/). – erip
'stringIO' не работает (python3). Используя библиотеку [io] (https://docs.python.org/3/library/io.html#io.StringIO), я получаю 'io.UnsupportedOperation: fileno' с' markdown = io.StringIO ("Это * * пример ** ")'. Кто-нибудь знает, как использовать 'stdin' в подпроцессе в python3? – somenxavier
Он должен работать с stringIO, потому что в bash вы можете называть 'echo 'some text' | pandoc -' работает – somenxavier