配置文件和项目文件在同一级,不能将配置文件放进项目中
#uwsgi使用配置文件启动
[uwsgi]
#项目目录
chdir=/home/zhouweiwei/myproject/realTime/ECG_App
#指定项目的application
module=ECG_App.wsgi:application
#指定sock的文件路径
socket=/home/zhouweiwei/myproject/realTime/script/uwsgi.sock
#进程个数
workers=5
pidfile=/home/zhouweiwei/myproject/realTime/script/uwsgi.pid
#指定IP端口
http=0.0.0.0:8080
#指定静态文件
stati-map=/static=/home/zhouweiwei/myproject/realTime/ECG_App/static
#启动uwsgi的用户和用户组
;uid=root
;git=root
#启用主进程
master=true
#自动移除unix socket和pid文件当服务停止的时候
vacuum=true
#序列化接收的内容,
thunder-lock=true
#设置自中断时间
harakiri= 60
#设置缓冲
post-buffering=32768
#设置日志目录
daemonize=/home/zhouweiwei/myproject/realTime/script/uwsgi.log
2,启动需要的命令:
../../venv/bin/uwsgi --ini uwsgi.ini 使用的是venv中的uwsgi命令
3,查看日志的内容:使用less uwsgi.log
4,监控日志
tail -f *.log
5,出现的问题:
每个进程在开始的时候依次加载文件,使得开启的所有的近程都处于开启状态,这样在访问的时候,uwsgi就可以将访问分配到每个进程中,
但是:
如果显存不够分配,在运行的时候就会有进程被kill掉,这样就造成进程又要重新分配。
注意的参数:显卡的占用情况,进程的id,
6,使用requests进行压力测试,要使用Process写一个多线程的循环,这样就可以实现多线程访问了
for i in range(100):
request_data = real_time_data_list[0]
real_time_data = request_data.decode('utf-8')
files = {'data_id': '1', 'real_data': real_time_data}
start_time = time.time()
task_process = Process(target=requests_send,args=(url,files)) #这里是关键
task_process.start()
time_sum[0] = time_sum[-1]+time.time()-start_time
profile_tool.endStat('计时')
7,多个进程不能对同一个文件进行读写,每一个进程是不同的实例,各个实例之间不能相互干扰。
8,多线程:
threads = []
def mul_threads(url):
data_list = os.listdir(path2)
for i in range(100):
request_data = readFile2(path2+ data_list[i])
real_time_data = request_data.decode('utf-8')
files = {'data_id': data_list[i], 'real_data': real_time_data}
t1 = threading.Thread(target=requests_send,args=(url,files,i)) #这个是关键
threads.append(t1)
#多线程
mul_threads(url)
print('len(threads)===========', len(threads))
start_time = time.time()
for t in threads:
t.setDaemon(True)
t.start()
t.join()
print('总共的时间==============',time.time()-start_time)
print('所有线程结束')