我有一个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
,然后使用这些参数创建类,当客户端同时访问时,这些变量值将被覆盖。
答案 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()