使用多线程

时间:2017-10-25 08:26:34

标签: python multithreading server uwsgi

我在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应用程序与多个线程安全。欢迎任何帮助

1 个答案:

答案 0 :(得分:0)

它已经解决了。 关键是你应该为每个完全独立的查询创建单独的连接,以避免在每次查询执行期间丢失数据