bottle + gevent并行支持

时间:2018-10-09 07:25:35

标签: python bottle gevent

我有一个Python瓶应用程序,并且将gevent服务器run(host=ip, port=8080, server="gevent")monkey.patch_all()一起使用。应用程序将在远程服务器上调用API方法,然后处理结果并返回JSON结果,例如{"ret": "success", "code": "0", "message": null, "id": "00001"}。我使用curl来测试应用程序,例如curl http://10.10.10.10:8080/Check,它可以返回成功。但是,当我同时尝试2次客户端访问时,第一个访问返回不完整的JSON结果,就像{"ret": "success", "code": "0", "message": null, "id"一样,第二个访问可以返回成功。如何处理这种并行访问?

在我的应用程序中,它将收到一些参数,例如id,然后使用这些参数创建类,当客户端同时访问时,这些变量值将被覆盖。

1 个答案:

答案 0 :(得分:0)

我不喜欢将内置方法用于bottle的gevent。原因是猴子补丁应该尽快运行。

from gevent import monkey, spawn as gspawn, joinall
monkey.patch_all()
import bottle
from app import appRoute
from client import clientRoute
from main import mainRoute
from api import apiRoute
from sandbox import sandboxRoute
from beaker.middleware import SessionMiddleware
botapp = bottle.app()
for route in (mainRoute, appRoute, clientRoute, apiRoute, sandboxRoute):
    botapp.merge(route)
botapp = SessionMiddleware(botapp, beaker_opts)
port = 80
WSGIServer(("0.0.0.0", int(port)), botapp, handler_class=WebSocketHandler).serve_forever()