Python 指定eventlet wsgi服务器的进程数

Python 指定eventlet wsgi服务器的进程数,python,flask,socket.io,swagger,eventlet,Python,Flask,Socket.io,Swagger,Eventlet,我正在尝试向现有应用程序添加websocket功能。应用程序的现有结构是 在/server/\uuuuu init\uuuuuuu.py中: from connexion import App ... connexion_app = App(__name__, specification_dir='swagger/') # Create Connexion App app = connexion_app.app # Configure Flask Application ... connex

我正在尝试向现有应用程序添加websocket功能。应用程序的现有结构是

/server/\uuuuu init\uuuuuuu.py
中:

from connexion import App
...
connexion_app = App(__name__, specification_dir='swagger/')  # Create Connexion App
app = connexion_app.app  # Configure Flask Application
...
connexion_app.add_api('swagger.yaml', swagger_ui=True)  # Initialize Connexion api
from server import connexion_app

connexion_app.run(
    processes=8,
    debug=True
)
from connexion import App
import socketio
...
connexion_app = App(__name__, specification_dir='swagger/')  # Create Connexion App
sio = socketio.Server()  # Create SocketIO for websockets
app = connexion_app.app  # Configure Flask Application
...
connexion_app.add_api('swagger.yaml', swagger_ui=True)  # Initialize Connexion api
import socketio
import eventlet

from server import sio
from server import app

myapp = socketio.Middleware(sio, app)
eventlet.wsgi.server(eventlet.listen(('', 5000)), myapp)
startserver.py
中:

from connexion import App
...
connexion_app = App(__name__, specification_dir='swagger/')  # Create Connexion App
app = connexion_app.app  # Configure Flask Application
...
connexion_app.add_api('swagger.yaml', swagger_ui=True)  # Initialize Connexion api
from server import connexion_app

connexion_app.run(
    processes=8,
    debug=True
)
from connexion import App
import socketio
...
connexion_app = App(__name__, specification_dir='swagger/')  # Create Connexion App
sio = socketio.Server()  # Create SocketIO for websockets
app = connexion_app.app  # Configure Flask Application
...
connexion_app.add_api('swagger.yaml', swagger_ui=True)  # Initialize Connexion api
import socketio
import eventlet

from server import sio
from server import app

myapp = socketio.Middleware(sio, app)
eventlet.wsgi.server(eventlet.listen(('', 5000)), myapp)
通过这种方式,我可以指定进程的数量。有一些长时间运行的任务使得有必要拥有尽可能多的进程

我已经修改了应用程序,以包括websocket功能,如下所示。似乎我只有一个流程可用。一旦应用程序尝试运行其中一个长期运行的进程,所有API调用都将挂起。此外,如果长时间运行的进程失败,应用程序将处于挂起状态

/server/\uuuuu init\uuuuuuu.py
中:

from connexion import App
...
connexion_app = App(__name__, specification_dir='swagger/')  # Create Connexion App
app = connexion_app.app  # Configure Flask Application
...
connexion_app.add_api('swagger.yaml', swagger_ui=True)  # Initialize Connexion api
from server import connexion_app

connexion_app.run(
    processes=8,
    debug=True
)
from connexion import App
import socketio
...
connexion_app = App(__name__, specification_dir='swagger/')  # Create Connexion App
sio = socketio.Server()  # Create SocketIO for websockets
app = connexion_app.app  # Configure Flask Application
...
connexion_app.add_api('swagger.yaml', swagger_ui=True)  # Initialize Connexion api
import socketio
import eventlet

from server import sio
from server import app

myapp = socketio.Middleware(sio, app)
eventlet.wsgi.server(eventlet.listen(('', 5000)), myapp)
startserver.py
中:

from connexion import App
...
connexion_app = App(__name__, specification_dir='swagger/')  # Create Connexion App
app = connexion_app.app  # Configure Flask Application
...
connexion_app.add_api('swagger.yaml', swagger_ui=True)  # Initialize Connexion api
from server import connexion_app

connexion_app.run(
    processes=8,
    debug=True
)
from connexion import App
import socketio
...
connexion_app = App(__name__, specification_dir='swagger/')  # Create Connexion App
sio = socketio.Server()  # Create SocketIO for websockets
app = connexion_app.app  # Configure Flask Application
...
connexion_app.add_api('swagger.yaml', swagger_ui=True)  # Initialize Connexion api
import socketio
import eventlet

from server import sio
from server import app

myapp = socketio.Middleware(sio, app)
eventlet.wsgi.server(eventlet.listen(('', 5000)), myapp)
我错过了什么

(旁注:如果您有任何资源可以更好地了解
Flask
对象的庞然大物,请告诉我!!)

  • 问题的确切答案:Eventlet内置的WSGI不支持多个进程
  • 获得所描述问题的最佳解决方案的方法:共享一个包含再现问题所需的绝对最小代码的文件。也许在这里或者你喜欢的任何其他方式
  • 希望之路。要戳的随机内容:
    eventlet.monkey\u patch()
    ,在单独的线程或进程中隔离eventlet和长阻塞调用

我也有类似的悬而未决的问题,你有没有设法解决?