最近,我决定在Python中创建一个线程函数来检查函数的输出,然后相应地更新函数的缓存。当我在本地运行测试时,一切都按预期工作,但在服务器上,我得到以下内容。
OperationalError
database "test_ebdb" is being accessed by other users
DETAIL: There are 10 other sessions using the database.`
这是我使用的线程函数,如果它调用的函数查询数据库,它将查询数据库。
def _check_and_update_cache(func, args, kwargs, cache_key,
timeout=settings.DEFAULT_CACHE_TIMEOUT):
"""
Runs the function that has been cached to see if the output is the same as
the one in the cache, if the output is not the same then it will
update the cache with the new result
"""
new_result = func(*args, **kwargs)
old_result = cache.get(cache_key)
if new_result != old_result:
cache.set(cache_key, new_result, timeout)
这是调用它的代码。
t = Thread(target=_check_and_update_cache, args=(func, args, kwargs, key,))
t.start()
答案 0 :(得分:0)
所以从评论@BishakhGhosh是正确的,我只需要增加我的Postgres服务器上的max_connections限制,现在一切都很好。
谢谢!