首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试执行基本MongoDB查询时,pymongo.errors.ServerSelectionTimeoutError: localhost:27017:[WinError 10061]

尝试执行基本MongoDB查询时,pymongo.errors.ServerSelectionTimeoutError: localhost:27017:[WinError 10061]
EN

Stack Overflow用户
提问于 2019-12-04 07:04:52
回答 3查看 3.6K关注 0票数 0

我目前正在尝试在我的Flask all应用中实现一个用户创建和登录系统,使用的是MongoDB Atlas (所以它是一个云服务器,我认为这对这个错误有很大的影响),mongoengine和pymongo (到本文为止都是最新版本)。每当我在create-user表单上提交用户名和密码,并试图通过查询数据库来验证用户名不存在时,我就会收到以下错误消息:

代码语言:javascript
运行
复制
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [WinError 10061] No connection could be made because the target machine actively refused it

下面是完整的回溯:

代码语言:javascript
运行
复制
    File "C:\Programming\Python\Lib\site-packages\flask\app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Programming\Python\Lib\site-packages\flask\app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  ...
    rv = self.dispatch_request()
  File "C:\Programming\Python\Lib\site-packages\flask\app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Programming\Khimbus\src\client\views\user_views.py", line 27, in create_user
    account_exists = find_user_by_username(username)
  File "C:\Programming\Khimbus\src\services\user_service.py", line 20, in find_all_users
    users = User.objects()
  File "C:\Programming\Python\Lib\site-packages\mongoengine\queryset\manager.py", line 37, in __get__
    queryset = queryset_class(owner, owner._get_collection())
  File "C:\Programming\Python\Lib\site-packages\mongoengine\document.py", line 207, in _get_collection
    db.client.is_primary:
  File "C:\Programming\Python\Lib\site-packages\pymongo\mongo_client.py", line 1006, in is_primary
    return self._server_property('is_writable')
  File "C:\Programming\Python\Lib\site-packages\pymongo\mongo_client.py", line 830, in _server_property
    server = self._topology.select_server(
  File "C:\Programming\Python\Lib\site-packages\pymongo\topology.py", line 229, in select_server
    return random.choice(self.select_servers(selector,
  File "C:\Programming\Python\Lib\site-packages\pymongo\topology.py", line 188, in select_servers
    server_descriptions = self._select_servers_loop(
  File "C:\Programming\Python\Lib\site-packages\pymongo\topology.py", line 204, in _select_servers_loop

REST端点:

代码语言:javascript
运行
复制
    @user_views.route('/create-user', methods=['GET', 'POST'])
    def create_user():
    if request.method == 'POST':
        print('Creating user...')
        username = request.form['username']
        password = request.form['password']

        account_exists = find_user_by_username(username)
        if account_exists:
            print(f'Error: Account with {username} already exists.')
            return render_template('error_page.html')

        hashpass = generate_password_hash(password)
        user_state.active_account = create_user(username, hashpass)
        print(user_state.active_account.username)
        session['username'] = user_state.active_account.username
        resp = jsonify('Created new account!')
        resp.status_code = 200
        return resp

    return render_template('create_user.html')

查找用户方法:

代码语言:javascript
运行
复制
def find_user_by_username(username: str) -> User:
    print('Finding user...')
    user = User.objects(username=username)
    print('Found user' + user)
    return user

我不确定这里发生了什么,其他相关问题涵盖了不同的错误代码,或者太过时了,无法帮助我使用MongoDB地图集。如有任何信息,我将不胜感激!

更新:已解决

当我安装MongoDB的时候,我并没有把它作为一个Windows服务来安装。我重新安装了它,用户创建现在运行得很好。

EN

回答 3

Stack Overflow用户

发布于 2019-12-04 09:18:19

您提到您正在使用atlas,但错误是连接到localhost。您需要在MongoClient对象中配置atlas连接字符串。

票数 1
EN

Stack Overflow用户

发布于 2019-12-04 10:10:49

检查mongodb是否正在运行

  1. 请在您的本地计算机上执行netstat -tlnp
  2. 从结果

中确保端口27017存在

在本地机器上安装mongodb

请在下面检查:mongodb installation

启动mongodb

systemctl start mongod

票数 1
EN

Stack Overflow用户

发布于 2021-05-18 00:11:16

来自pythonexamples!我们已经看到了可能导致此错误的原因。交叉检查以下各项以建立到MongoDB实例的连接。

确保您的MongoDB实例正在运行。转到进程并检查mongod.exe是否正在运行。

Windows:进入任务管理器Ubuntu:运行“ps-aef”命令,查找mongod进程,检查您提供的URL是否正确。检查运行Mongo Daemon的IP地址和端口是否正确。

要在pythonexamples上安装MongoDB :请检查:从windows!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59166714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档