我在linux mint上运行uwsgi应用程序。它已经与数据库一起工作并在我的localhost上显示它。我在 127.0.0.1 IP 和 8080端口上运行它。之后我想通过ab(apache基准测试)来测试它的性能。
当我通过命令uwsgi --socket 0.0.0.0:8080 --protocol=http -w wsgi
运行应用程序并对其进行测试时,它可以正常工作但速度很慢。
所以我想用多个线程来运行应用程序以加快速度。所以我使用--threads
选项,命令是uwsgi --socket 0.0.0.0:8080 --protocol=http -w wsgi --threads 8
。
但是当我运行ab来测试它时,在2或3次请求之后,我的应用程序停止了一些错误,我不知道如何解决它。每次我运行它,错误的类型是不同的。一些错误是这样的:
(Traceback(最近一次通话):2014年,'命令不同步')
或
(Traceback(最近一次呼叫最后一次):文件" ./ wsgi.py",第13行,in 应用 在show_description中返回show_description(id)文件" ./ wsgi.py",第53行 cursor.execute(" select * from info where id =%s;"%id)File" /home/mohammadhossein/myFirstApp/myappenv/local/lib/python2.7/site-packages /pymysql/cursors.py" ;, 第166行,执行中 result = self._query(query)File" /home/mohammadhossein/myFirstApp/myappenv/local/lib/python2.7/site-packages/pymysql/cursors.py", 第322行,在_query中 conn.query(q)File" /home/mohammadhossein/myFirstApp/myappenv/local/lib/python2.7/site-packages/pymysql/connections.py", 第856行,在查询中 self._affected_rows = self._read_query_result(unbuffered = unbuffered)'数据包序列号 错误 - 得到1预期2',)文件 " /home/mohammadhossein/myFirstApp/myappenv/local/lib/python2.7/site-packages/pymysql/connections.py" ;, 第1057行,在_read_query_result
中
或
('数据包序列号错误 - 得到1预期2',)回溯(大多数 最近的电话):
或
('数据包序列号错误 - 得到1预期2',)回溯(大多数 最近的呼叫最后一次):文件" ./ wsgi.py",第13行,在申请中 在show_description中返回show_description(id)文件" ./ wsgi.py",第52行 cursor.execute(' UPDATE info SET views = views + 1 WHERE id =%s;',id)文件 " /home/mohammadhossein/myFirstApp/myappenv/local/lib/python2.7/site-packages/pymysql/cursors.py" ;, 第166行,执行中 result = self._query(query)
请帮助我如何运行我的uwsgi应用程序与多个线程安全。欢迎任何帮助
答案 0 :(得分:0)
它已经解决了。 关键是你应该为每个完全独立的查询创建单独的连接,以避免在每次查询执行期间丢失数据