因此,我想使用Python,Falcon和Gunicorn创建WSGI服务,以使用yield
运算符显示该方法的中间进度。
import falcon
from falcon_cors import CORS
cors = CORS(allow_all_origins=True)
class Test:
def __init__(self):
self.name = 'Main'
def on_get(self, req, resp):
result = self.main()
resp.stream=result
def main(self):
for i in self.sum():
yield i
def sum(self):
for i in self.getx():
if str(i).startswith("X"):
yield i
else:
x=int(i)
for i in self.gety():
if str(i).startswith("Y"):
yield i
else:
y=int(i)
result=x+y
yield "SUM: " + str(result) + "\n"
def getx(self):
x=2
yield "X: " + str(x)+"\n"
yield x
def gety(self):
y=4
yield "Y: " + str(y)+"\n"
yield y
api = falcon.API(middleware=[cors.middleware])
api.add_route('/', Test())
GET的HTML响应如下:
X: 2
Y: 4
SUM: 6
但是我的实际代码比此示例大得多。一系列仅通过return
值调用绝对有效的其他方法的方法。将所有这些方法更改为yield
其输出并引入for loop
来查找要作为流的值和实际return
值以进行处理似乎是非常不明智的。只是为了让我可以在HTML页面上显示一些字符串。
应该有某种方法将字符串消息发送到另一个在HTML页面上显示输出的进程或线程,而其余代码仅在return
值下正常工作。当我们使用print
在控制台屏幕上显示消息时,return
仅使用调用方法进行处理所需的值。