我已经使用横梁有一段时间了,我喜欢它。我有一个问题,关于运行连接到外部路由器的工作人员的最佳方法。我使用“横栏启动”并创建一个连接到路由器的配置文件,这非常有效。
最近,我的需求已经更改为我希望通过环境变量将路由器url和王国传递到配置文件中的位置。经过尝试和错误之后,我得出结论,这在当前的XBAR实现中是不可能的。
然后,我使用以下方法创建了一个应用程序运行程序,其中我从config vars检索了领域和url。
runner = ApplicationRunner(url=url, realm=realm)
runner.run(AppSession)这是可行的,但我注意到我的服务器会周期性地停机。在根引发之后,我意识到反向代理在1小时的不活动之后正在超时连接。查看服务器日志,我得到了"onDisconnect“回调。查看XBAR应用程序运行程序文档,它声明如下
This class is a convenience tool mainly for development and quick hosting
of WAMP application components.我的服务以"runit“脚本作为守护进程运行。我想出的一些快速解决办法是
考虑到XBAR人员明确表示ApplicationRunner是一种开发工具,所有这些都开始让人感到非常讨厌。有人知道我是否可以使用除应用程序运行程序以外的其他东西,或者以某种方式将环境变量放入config.json文件中?
作为临时解决办法,我正在使用sed。这是我的配置文件
{
"controller": {
},
"workers": [
{
"type": "container",
"options": {
"pythonpath": [".."]
},
"components": [
{
"type": "class",
"classname": "src.app_session.AppSession",
"realm": "%%%ROUTER_REALM%%%",
"transport": {
"type": "websocket",
"endpoint": {
"type": "tcp",
"host": "%%%ROUTER_HOST%%%",
"port": %%%ROUTER_PORT%%%
},
"url": "%%%ROUTER_PROTOCOL%%%://%%%ROUTER_HOST%%%/ws"
}
}
]
}
]}
我的runit脚本是
#!/bin/bash
# Update the ROUTER config parameters
sed -i -e "s/%%%ROUTER_HOST%%%/${ROUTER_HOST}/g" /app/.crossbar/config.json
sed -i -e "s/%%%ROUTER_PORT%%%/${ROUTER_PORT}/g" /app/.crossbar/config.json
sed -i -e "s/%%%ROUTER_REALM%%%/${ROUTER_REALM}/g" /app/.crossbar/config.json
sed -i -e "s/%%%ROUTER_PROTOCOL%%%/${ROUTER_PROTOCOL}/g" /app/.crossbar/config.json
cat /app/.crossbar/config.json
cd /app/
exec crossbar start发布于 2015-09-26 11:00:12
Crossbar.io确实没有任何机制来实现您想做的事情。从项目的角度来看,没有计划将其作为一个特性来实现。我们想把重点放在management上,它将支持动态管理Crossbar.io。
https://stackoverflow.com/questions/32786414
复制相似问题