问:如何整合 Pyramid 1.5 和 Socket.IO 1.3?

Q: How to integrate Pyramid 1.5 and Socket.IO 1.3?

我在客户端使用 Pyramid Framework 1.5 和 Gevent-socketio in the server-side and Socket.IO V1.3 时遇到问题。 我遇到的问题是,当我在客户端打开套接字时,服务器会抛出内部服务器错误 (500)。 此外,终端输出以下行:

    socket = environ['socketio']
KeyError: 'socketio'

我搜索过这个问题,我读到它与我正在使用的 WSGI 服务器有关(目前是 Gunicorn。也许我使用它或设置它的方式是错误的)但是关于这个问题,我找不到任何好的资源。

我有几个问题:

  1. 首先,Pyramid 与新的 Socket.IO V1.3 之间是否有任何良好的集成(gevent-socketio 项目在过去 1 年内没有更新,从那时起 Socket.IO V1 发布有重大变化)。
  2. 我读到我必须用 Gevent 或其他东西设置 Gunicorn,但我做不到。对此有什么好的资源或解释吗?
  3. 最后但并非最不重要的一点,题外话,在生产中,人们如何 运行 他们的应用程序?使用服务器中的终端?听起来有些奇怪。有人可以解释我应该如何 运行 在生产中(而不是在生产中)以正确的方式使用 Gunicorn 和 Pyramid 的应用程序吗?我应该 运行 什么文件以及如何?它应该包含什么?

谢谢!

更新:
也许我不够清楚,但是当我使用旧版本(例如,Socket.IO V0.9.6)时,问题不会发生。但是当我将 JavaScript 文件从 Socket.io 版本 0.9.6 更改为 Socket.IO 版本 1(及更高版本)时,问题就出现了。

1) Pyramid 和 Socket.IO 的集成已经为您完成: https://github.com/abourget/gevent-socketio

2) 您可以查看 Gunicorn 文档以获取有关设置它的信息,包括在 Pyramid 的开发中放置的内容。ini/production.ini 文件(粘贴): http://docs.gunicorn.org/en/develop/configure.html#paster-applications 补充阅读:https://www.digitalocean.com/community/tutorials/how-to-deploy-python-wsgi-apps-using-gunicorn-http-server-behind-nginx#serving-python-web-applications-with-gunicorn

3) 以下是有关为生产部署 Web 应用程序的信息(Nginx 是 Apache 的一种非常流行的替代品): http://pyramid-cookbook.readthedocs.org/en/latest/deployment/nginx.html