2012-07-16 62 views
0

我有一個python腳本我正在運行將文檔添加到遠程MongoDB數據庫的集合。該文件如下:連接似乎接受服務器端,但似乎被拒絕在我的python腳本

from pymongo import Connection 
ip = 'x.x.x.x' #edited out 

conn = Connection() 
db = conn['netmon'] 

users = db.users 
print 'number of users: ' + str(users.count()) 
if users.count() == 0: 
    print 'Please create a new account.' 
    t_user = raw_input('Username:') 
    users.insert({'username':unicode(t_user)}) 
conn.close() 

當我運行這個腳本時,我有一些有趣的行爲。在服務器日誌中,似乎連接被接受,查詢運行,然後關閉連接。

# Mongodb logs 
14:27:18 [initandlisten] connection accepted from 108.93.46.75:39558 #1 
14:27:18 [conn1] run command admin.$cmd { ismaster: 1 } 
14:27:18 [conn1] command admin.$cmd command: { ismaster: 1 } ntoreturn:1 reslen:71 0ms 
14:27:18 [conn1] run command netmon.$cmd { count: "users", fields: null, query: {} } 
14:27:18 [conn1] Accessing: netmon for the first time 
14:27:18 [conn1] command netmon.$cmd command: { count: "users", fields: null, query: {} } ntoreturn:1 reslen:58 10ms 
14:27:18 [conn1] end connection 108.93.46.75:39558 

但是,這是我從python腳本得到:

# Python error 
> python testmongo.py 
Traceback (most recent call last): 
    File "testmongo.py", line 7, in <module> 
    conn = Connection() 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py", line 290, in __init__ 
    self.__find_node() 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py", line 586, in __find_node 
    raise AutoReconnect(', '.join(errors)) 
pymongo.errors.AutoReconnect: could not connect to localhost:27017: [Errno 111] Connection refused 
[email protected]:~/Desktop$ python testmongo.py 
Traceback (most recent call last): 
    File "testmongo.py", line 7, in <module> 
    conn = Connection() 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py", line 290, in __init__ 
    self.__find_node() 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py", line 586, in __find_node 
    raise AutoReconnect(', '.join(errors)) 
pymongo.errors.AutoReconnect: could not connect to localhost:27017: [Errno 111] Connection refused 
[email protected]:~/Desktop$ python testmongo.py 
Traceback (most recent call last): 
    File "testmongo.py", line 7, in <module> 
    conn = Connection() 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py", line 290, in __init__ 
    self.__find_node() 
    File "/usr/local/lib/python2.7/dist-packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py", line 586, in __find_node 
    raise AutoReconnect(', '.join(errors)) 
pymongo.errors.AutoReconnect: could not connect to localhost:27017: [Errno 111] Connection refused 

一些有用的信息: 遠程服務器上運行OpenVZ的車輛定位系統。我知道有與count()和迭代器相關的兼容性問題,但我(假設)通過使用--smallfiles選項修復了它們,並將我的nssize限制爲100.我的防火牆在兩端都完全打開。

我也注意到,在錯誤,autoreconnect嘗試連接到本地主機,即使我指定了不同的IP地址。

回答

0

你需要通過IP - conn = Connection(ip)

+0

我不敢相信我沒有抓住。錯誤發生後,我一直遇到錯誤,並且在修復OpenVZ內存問題後才做出此更改。謝謝。 – Craysiii 2012-07-16 20:18:38

相關問題