【发布时间】:2019-01-24 05:35:09
【问题描述】:
我创建了一个带有以下views.py的django api
import datetime
import os
import traceback
from logging.handlers import TimedRotatingFileHandler
from logging import Formatter
from django.http import HttpResponse
import logging
# from . import models as m
import pandas as pd
import json
import psycopg2 as pg
# logger setup
def resp(status):
//returns status code
def index(request):
logger.info('request:' + str(request.GET))
obj = DAA()
if request.method == "GET":
// get values from url request
if (condition):
try:
connection = pg.connect(dbname="dbname", user="user", password="password")
cursor = connection.cursor()
response = obj.level1(arguments)
response = obj.level2(arguments)
try:
// check response
except Exception as e:
# add exception to log
except Exception as e:
# add exception to log
if response :
json_data = {
"responseCode": 200,
"version": "1.0.0",
"results":
[
// response
]
}
json_dump = json.dumps(json_data)
return HttpResponse(json_dump, content_type='application/json')
elif not response :
json_dump = resp(400)
return HttpResponse(json_dump, content_type='application/json')
class DAA:
def level1(arguments):
GB = []
if condition:
query = //query
try:
query_df = pd.read_sql_query(query, connection)
response = [i for i in query_df[//xyz]] // get values
except Exception as e:
cursor.execute('rollback;')
# add exception to log
return None
gb_data = //response
GB.append(gb_data)
return GB
else :
argument = argument .upper()
argument = argument .split(',')
for i, val in enumerate(argument):
query = //query
try:
query_df = pd.read_sql_query(query, connection)
response = [i for i in query_df['xyz']]
except Exception as e:
# add exception to log
return None
gb_data = //response
GB.append(gb_data)
return GB
def level2(arguments):
if condition:
argument = []
try:
cursor.execute( // query )
return response
except Exception as e:
cursor.execute('rollback;')
# add exception to log
return None
else :
argument = []
argument = argument.upper()
argument = argument.split(',')
for i, val in enumerate(argument):
try:
cursor.execute( //query )
except Exception as e:
# add exception to log
return None
return response
使用上面的代码,我面临以下问题:
- 在 jmeter 上测试超过 100 个用户的应用程序时,我收到“客户端已经太多”错误,这似乎是 conf 文件 [max_connections = 100] 中的 postgres 数据库的问题,但增加了连接似乎对我不起作用,所以请提出其他建议。
- 即使为少于 100 个用户运行应用程序,我也会收到此错误“RuntimeError: can't start new thread”,所以请建议如何解决这个错误?
- 注意:- 请忽略编程错误,因为我只共享了我的代码的虚拟结构。
【问题讨论】:
标签: python django multithreading apache psycopg2