【发布时间】:2019-10-18 18:07:58
【问题描述】:
在 Klein API for Non-blocking 方面需要帮助。 这是一个简单的测试应用:
# -*- coding: utf-8 -*-
import datetime
import json
import time
from klein import Klein
app = Klein()
async def delay(seconds):
"""Set some delay for test"""
time.sleep(seconds)
return "Works"
@app.route('/', branch=True)
async def main(request):
some_data = await delay(5)
return json.dumps([{
"status": "200",
"time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"data": some_data
}])
app.run("localhost", 8080)
然后只需运行我的server.py,然后同时向http://127.0.0.1:8080/ 发出2 个请求。
结果是:
[ { "status": "200", "time": "2019-10-18 20:57:16", "data": "Works" } ]
[ { "status": "200", "time": "2019-10-18 20:57:21", "data": "Works" } ]
每个响应之间有 5 秒的延迟。
问题:
如何让这段代码同时处理 2 个请求,现在它正在一个一个地工作......
也试过用twistd,结果一样
PYTHONPATH=. twistd --pidfile=apserver.pid -n web --class=api.resource --port tcp:8000:interface=0.0.0.0
谢谢
【问题讨论】:
-
嗨@Максим Дихтярь 如果这个或任何答案已经解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
-
@Levon 是的,这有助于解决我的问题。非常感谢
标签: python-3.x asynchronous twisted nonblocking klein-mvc