OpenShift Python mongoDB环境变量未设置/无法连接 [英] OpenShift Python mongoDB environment variables not set / can't connect

查看:110
本文介绍了OpenShift Python mongoDB环境变量未设置/无法连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是在我的应用程序文件的头部:

This is in my application file head:

import os
import sys
from cgi import parse_qs, escape
import pymongo
from pymongo import MongoClient

我已经安装了mongoDB 2.4齿轮,并且正在尝试通过

I have the mongoDB 2.4 gear installed, and am trying to connect via

client = MongoClient('mongodb:$OPENSHIFT_MONGODB_DB_HOST:$OPENSHIFT_MONGODB_DB_PORT/')

我得到了错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/var/lib/openshift/531b77fd500446980900010d/python/virtenv/lib/python2.7/site-packages/pymongo/mongo_client.py", line 239, in __init__
    res = uri_parser.parse_uri(entity, port)
  File "/var/lib/openshift/531b77fd500446980900010d/python/virtenv/lib/python2.7/site-packages/pymongo/uri_parser.py", line 269, in parse_uri
    nodes = split_hosts(hosts, default_port=default_port)
  File "/var/lib/openshift/531b77fd500446980900010d/python/virtenv/lib/python2.7/site-packages/pymongo/uri_parser.py", line 209, in split_hosts
    nodes.append(parse_host(entity, port))
  File "/var/lib/openshift/531b77fd500446980900010d/python/virtenv/lib/python2.7/site-packages/pymongo/uri_parser.py", line 137, in parse_host
    raise ConfigurationError("Port number must be an integer.")
pymongo.errors.ConfigurationError: Port number must be an integer.

似乎未设置OPENSHIFT_MONGODB_DB_PORT

print  OPENSHIFT_MONGODB_DB_PORT --> NameError: name 'OPENSHIFT_MONGODB_DB_PORT' is not defined

OPENSHIFT_MONGODB_DB_HOST

建立连接我需要做什么?

What would I need to do, to set up a connection?

更新:

我能够通过对来自rockmongo的信息进行硬编码来直接通过客户端进行连接

I was able to connect directly via client by hardcoding info from rockmongo

client = MongoClient('mongodb://admin:password@[ip addr]:[port]/') 

但是当我这样做

client = MongoClient('mongodb:admin:password@%s:%s/' %  os.environ['OPENSHIFT_MONGODB_DB_HOST'], os.environ['OPENSHIFT_MONGODB_DB_PORT'])) 

我知道

[error] (<type 'exceptions.KeyError'>, KeyError('OPENSHIFT_MONGODB_DB_HOST',), <traceback object at 0x7f7bc8367248>)

推荐答案

OpenShift连接变量定义为环境变量,不能作为常规Python变量进行访问.因此,您提供的打印语句不起作用,以下内容应如此:

The OpenShift connection variables are defined as environment variables, they cannot be accessed as normal Python variables. So the print statement you gave does not work, the following should;

import os
print os.environ['OPENSHIFT_MONGODB_DB_PORT']

您应该将代码更改为;

You should change your code to;

client = MongoClient('mongodb:%s:%s/' % (os.environ['OPENSHIFT_MONGODB_DB_HOST'], os.environ['OPENSHIFT_MONGODB_DB_PORT))

您可以参考示例 查看全文

登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆