Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接在服务器端被接受,但在我的python脚本中被拒绝_Python_Mongodb_Pymongo - Fatal编程技术网

连接在服务器端被接受,但在我的python脚本中被拒绝

连接在服务器端被接受,但在我的python脚本中被拒绝,python,mongodb,pymongo,Python,Mongodb,Pymongo,我运行了一个python脚本,用于将文档添加到远程mongodb数据库的集合中。档案如下: 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 'P

我运行了一个python脚本,用于将文档添加到远程mongodb数据库的集合中。档案如下:

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
charles@charles-mbp:~/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
charles@charles-mbp:~/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
#Python错误
>python testmongo.py
回溯(最近一次呼叫最后一次):
文件“testmongo.py”,第7行,在
conn=连接()
文件“/usr/local/lib/python2.7/dist packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py”,第290行,在__
self.\u查找节点()
文件“/usr/local/lib/python2.7/dist packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py”,第586行,在uu find_节点中
引发自动重新连接(“,”.join(错误))
pymongo.errors.AutoReconnect:无法连接到本地主机:27017:[Errno 111]连接被拒绝
charles@charles-mbp:~/Desktop$python testmongo.py
回溯(最近一次呼叫最后一次):
文件“testmongo.py”,第7行,在
conn=连接()
文件“/usr/local/lib/python2.7/dist packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py”,第290行,在__
self.\u查找节点()
文件“/usr/local/lib/python2.7/dist packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py”,第586行,在uu find_节点中
引发自动重新连接(“,”.join(错误))
pymongo.errors.AutoReconnect:无法连接到本地主机:27017:[Errno 111]连接被拒绝
charles@charles-mbp:~/Desktop$python testmongo.py
回溯(最近一次呼叫最后一次):
文件“testmongo.py”,第7行,在
conn=连接()
文件“/usr/local/lib/python2.7/dist packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py”,第290行,在__
self.\u查找节点()
文件“/usr/local/lib/python2.7/dist packages/pymongo-2.2.1-py2.7-linux-x86_64.egg/pymongo/connection.py”,第586行,在uu find_节点中
引发自动重新连接(“,”.join(错误))
pymongo.errors.AutoReconnect:无法连接到本地主机:27017:[Errno 111]连接被拒绝
一些有用的信息: 远程服务器是在OpenVZ上运行的VPS。我知道存在与count()和迭代器相关的兼容性问题,但我(假设)通过使用--smallfiles选项以及将nssize限制为100来修复了这些问题。我两边的防火墙都完全打开了


我还注意到,在错误中,autoreconnect正在尝试连接到本地主机,即使我指定了不同的IP地址。

您需要传递IP-
conn=Connection(IP)

我真不敢相信我没有捕捉到。我一个接一个地出错,只是在修复OpenVZ内存问题后才进行了更改。非常感谢。