Pymongo在任何update_one操作上超时

问题描述

我一直在努力弄清这是怎么回事,但是我有一个flask app API。

直到两天前,当我开始从gunicorn收到一个Critical Worker Timeout错误时,它的运行情况还不错(没有提交导致此错误)。

经过一番调查,我发现对mongodb cloud atlas的任何update_one操作都会超时。更新会一直进行到记录,但过程会一直挂在那里,直到最终超时。

我创建了一个新环境,并获得了相同的结果,甚至在另一台计算机上进行了尝试,并更改了Atlas的IP地址设置,以防万一。

有什么想法吗?我将我在较新环境中尝试过的精简版的require.txt和脚本放入,结果相同。

certifi==2020.6.20
chardet==3.0.4
dnspython==2.0.0
idna==2.10
passlib==1.7.2
pymongo==3.11.0
requests==2.24.0
urllib3==1.25.10

CODE

from pymongo import MongoClient
import pymongo

import requests

from passlib.hash import pbkdf2_sha256 as sha

import urllib.parse
import sys

auth = urllib.parse.quote('password')

client = pymongo.MongoClient('mongodb+srv://xx:{}@xxx.gcp.mongodb.net/test?retryWrites=true&w=majority'.format(auth))

db = client['collection']

usersdb = db['users']

def userCheck( username ):

    user = usersdb.find_one({'_id': username })

    if user['free_contacts'] >= 1:

        updatedContacts = user['free_contacts'] - 1

        usersdb.update_one({'_id': username},{'$set': { 'free_contacts': updatedContacts }})

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)