求大牛知道http post多并发设置python 2.7环境,python2.7,注意是python 2.
求大牛知道http post多并发设置python 2.7环境,python2.7,注意是python 2.
注意是python 2.7, (multiprocessing值支持到2.6,2.7下安装会报错)
用threadpool试了一下,总是报错:
单次并发的函数
data = ['a', 'b', 'c']#data传到threadpool.makeRequests里面的第二个参数,函数会将这个列表里面的值取出来,然后根据并发数进行并发。def repost(data): response = requests.post(url, data).text return response
结果处理函数,只是打印出来
def postresult(requestself, responseresult): print(responseresult) #其他的处理,比如对结果插入到数据库,或者写入日志等,可以在这里写pool = threadpool.ThreadPool(5)requests = threadpool.makeRequests(repost, data, postresult)**#之前出问题,是因为这里requests的名称定义和requests()方法冲突了。。。然后报错又很奇怪,没引起注意,把这里的requests改个名字就OK了。各位,承让了。当然,下面这一样,也改一下。requests的名称。[pool.putRequest(req) for req in requests]pool.wait()
报错如下:
Traceback (most recent call last): File "C:\User\AppData\Local\Programs\Python\Python35-32\lib\site-packages\threadpool.py", line 158, in run result = request.callable(*request.args, **request.kwds) File "C:\test.py", line 29, in repost response = requests.post(url, data1).textAttributeError: 'list' object has no attribute 'post'
或者有没有其他实现方法?
我靠,我靠,我靠靠靠。。。。问题解决了。看上面的备注。再见。
2.7没有asyncio,你可以用gevent之类的,还有几十2.7应该是有multiprocessing的,只是你这种是io密集型的,用多进程会适得其反, 用第三方库实现协程吧
先把test.py全贴上来,看错误提示你应该是覆盖了request变量,导致request变成了list类型。
建议,不要使用ThreadPool实现多并发,基于Python的特性,即使你使用多线程,也只能同时运行一条指令而已,多线程性能提升有限。
你首先应该使网络异步,然后实现基本的ioloop,也可以基于asyncio或tornado 实现单线程多并发
编橙之家文章,
相关内容
- Python抓取通过电影名称获取视频地址,python电影名称
- 请问特殊符号在cmd中要如何输出呢?,特殊符号cmd输出
- except和finally可以同时在try中使用吗,exceptfinally,try:
- 重新安装yum报ImportError: No module named sqlitecachec错误是何
- Python可以同时控制两个显示屏幕输出吗?,python显示屏幕
- 关于Python修饰类@class的求助,Python修饰类@class,看到文章
- 这个python项目中向原数据中追加添加新数据用什么方法
- Python复杂字典结构变志字符串形式如何操作,python字符
- Python Tornado异步请求线程问题求助,pythontornado,假设有如
- Python sqlalchemy对mysql表操作方是怎么样,pythonsqlalchemy,有
评论关闭