我有一个实现Web服务器的Golang程序。预计它将持续运行,并且在任何意外故障或崩溃的情况下重新启动。为此,我尝试使用supervisord
将其配置为UNIX进程。但是,我面临的问题是代码中包含的外部go库未被识别为supervisord
无法识别GOPATH
。这导致了以下错误:
web_server.go:11:2: cannot find package "github.com/gorilla/mux" in any of:
/usr/lib/go/src/github.com/gorilla/mux (from $GOROOT)
($GOPATH not set)
使用supervisord运行Web服务器时。我的Web服务器的supervisord配置是:
[program:web_server]
command=go run web_server.go
directory=/home/ubuntu
autostart=true
autorestart=true
startretries=5
stderr_logfile=/home/ubuntu/err_logs/web_server.err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
这是什么解决方法?
答案 0 :(得分:2)
我所遗漏的supervisord
所述的supervisord
的一个重要属性是:
子进程将继承用于启动的shell的环境
SUPERVISOR_ENABLED
计划。将设置几个环境变量 监督自己在孩子的环境中也包括在内SUPERVISOR_PROCESS_NAME
(表示该过程的标志在主管下 control),SUPERVISOR_GROUP_NAME
(配置文件指定的进程 这个过程的名称)和environment
( 子进程的config-file指定进程组名称。)这些环境变量可能会在[supervisord]中被覆盖 section config选项名为
[program:x]
(适用于所有子进程) 或者在per[program:x]
部分环境配置选项中 (仅适用于GOPATH
中指定的子流程 部分)。
因此,在environment
变量中添加[program:web_server]
command=go run web_server.go
directory=/home/ubuntu
autostart=true
autorestart=true
startretries=5
stderr_logfile=/home/ubuntu/err_logs/web_server.err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
environment=GOPATH="/home/ubuntu"
解决了这个问题。
let _url = NSURL(string: url)
let URLRequest = NSURLRequest(URL: _url!)
imageDownloader.imageCache?.removeImageForRequest(URLRequest, withAdditionalIdentifier: nil)
imageDownloader.sessionManager.session.configuration.URLCache?.removeCachedResponseForRequest(URLRequest)