我正在用 golang 编写一个 websocket 服务。该程序使用gollira websocket接受ws请求,并在每个请求处理程序中监听rabbitmq队列的消息。
问题是,当我关闭浏览器窗口时,处理程序线程仍在运行,我猜想有一种机制可以在连接断开时收到通知。
当我不工作时,我尝试收听频道 request.Context().Done() 。
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/websocket"
"github.com/streadway/amqp"
)
var (
addr = "localhost:9999"
upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool { return true },
}
)
var conn *amqp.Connection
func watch(w http.ResponseWriter, r *http.Request) {
ns := r.URL.Query().Get("ns")
if ns == "" {
return
}
c, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Print("upgrade:", err)
return
}
defer c.Close()
ch, err := conn.Channel()
failOnError(err, "Failed …Run Code Online (Sandbox Code Playgroud) 我是Flask的新手,在编写视图时,如果应该捕获所有错误,我会徘徊.如果我这样做,大多数视图代码应该包含try ... except.我认为这不是优雅的.
例如.
@app.route('/')
def index():
try:
API.do()
except:
abort(503)
Run Code Online (Sandbox Code Playgroud)
我应该像这样编码吗?如果没有,服务会崩溃(uwsgi + lnmp)吗?
我正在从 DJANGO 切换到 Rails,但我不知道如何在 PROD 环境中安装 RVM。
我的 PROD 服务器没有互联网连接,即使有一段时间也无法连接。而且我找不到 RVM 的独立安装包。
有没有离线RVM安装的解决方案?
顺便说一句,可以在没有互联网的情况下安装 rails 吗?