【问题标题】:Q: How to integrate Pyramid 1.5 and Socket.IO 1.3?问:如何集成 Pyramid 1.5 和 Socket.IO 1.3?
【发布时间】:2015-04-05 19:32:32
【问题描述】:

我在服务器端使用 Pyramid Framework 1.5 和 Gevent-socketio 并在客户端使用 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(及更高版本)时,问题就出现了。

【问题讨论】:

  • 请大家帮忙!

标签: socket.io pyramid gunicorn


【解决方案1】:

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

2) 您可以查看 Gunicorn 文档以获取有关设置的信息,包括在 Pyramid 的 development.ini/production.ini 文件中放入的内容(Paster): 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

【讨论】:

  • 首先非常感谢您!其次,gevent-socketio(如上所述)在过去 1 年没有更新,从那时起 Socket.IO V1 发布了重大更改(这导致了问题。如果我使用的是 Socket.IO v 0.9,问题不会不会发生)。所以我认为 gevent-socketio 有点过时了,无法处理新版本。
  • 没错,gevent-socketio 目前不适用于 Socket.IO v1,它适用于 v0.9:github.com/abourget/gevent-socketio/issues/192 ...但除非您需要 v1 的特定功能,否则 gevent-socketio目前是我知道的唯一选择。等待 gevent-socketio 与 Socket.IO v1 一起工作可能需要很长时间,所以如果 Socket.IO 对您很重要,我会说继续使用 gevent-socketio 和 Socket.IO v0.9。
  • 我同意,谢谢拉吉!我真的不需要 socket.io V1 的特定功能,但我看到他们对其进行了改进并添加了很多东西(例如加入的 engine.io 的机制)。毕竟我认为如果没有其他选择,我会坚持使用 Socket.IO v0.9。
猜你喜欢
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 2016-11-05
  • 2012-04-02
  • 2016-12-29
  • 1970-01-01
  • 2016-06-07
相关资源
最近更新 更多