python异步写文件_结合异步http请求将数据写入文件
我从here编辑了此代码:import asyncio
import time
from aiohttp import ClientPayloadError
from aiohttp import ClientSession
COUNTER = 1
async def fetch(url, session):
async with session.get(url) as response:
delay = response.headers.get("DELAY")
date = response.headers.get("DATE")
global COUNTER
COUNTER +=1
print("{}. {}:{} with delay {}".format(str(COUNTER), date, response.url, delay))
try:
return await response.text()
except ClientPayloadError:
print("ERROR: ".format(url))
async def bound_fetch(sem, url, session):
# Getter function with semaphore.
async with sem:
await fetch(url, session)
async def run():
urls = [build_url(id) for id in load_ids()]
tasks = []
# create instance of Semaphore
sem = asyncio.Semaphore(1000)
# Create client session that will ensure we dont open new connection
# per each request.
async with ClientSession(conn_timeout=10000, read_timeout=10000) as session:
for url in urls:
#pass Semaphore and session to every GET request
task = asyncio.ensure_future(bound_fetch(sem, url, session))
tasks.append(task)
responses = asyncio.gather(*tasks)
await responses
def build_url(id):
url = 'http://api.metagenomics.anl.gov/annotation/sequence/{}?source=Refseq'.format(id)
return url
def load_ids():
#in the "real" code I will load a file here and extract the ids
return """
mgm4558908.3
mgm4484962.3
mgm4734169.3
mgm4558911.3
mgm4484983.3
mgm4558918.3
""".strip().split()
start = time.clock()
loop = asyncio.get_event_loop()
future = asyncio.ensure_future(run())
loop.run_until_complete(future)
run_time = (start - time.clock())/60
print("this took: {} minutes".format(run_time))
我知道我可以使用:print(await response.text())打印响应数据,但是我不喜欢异步代码,因此我不知道应该如何以及在哪里打开并写入文件。因为我认为在同一时间写入同一个文件时,有某种线程可能会导致问题(我熟悉多处理)。在
python异步写文件_结合异步http请求将数据写入文件相关推荐
- php接收post写入文件,PHP中Post和Get获取数据写入文件中
有时候Post或者Get传过来的数据我们不知道它是个什么样的形式,它可能是JSON格式或者就是简单提交过来的数据,这时候我们可以把他写入到文本中,就可以看到传过来的数据是什么格式了. $val = & ...
- python变量输出到文件_使用函数将多个变量写入文件
首先,要获得当前正在执行的脚本名,或者更确切地说是调用函数的模块,必须从堆栈跟踪中获取它.globals()-它将在writeToValues()函数的相同上下文中执行,因此它不会从"调用者 ...
- java 将map写入文件_如何将java中map数据写入txt文件中
用户提问 例如 static{ //初始化默认用户 user.setUsername("admin"); user.setPassword("123"); tr ...
- 字典(JSON)数据写入文件并换行,Python
字典(JSON)数据写入文件并换行,Python import jsonif __name__ == '__main__':dict_data = {"one": 1, " ...
- Python程序员经常会遇到文件权限问题,例如在打开或写入文件时出现“PermissionError: [Errno 13] Permission denied...
Python程序员经常会遇到文件权限问题,例如在打开或写入文件时出现"PermissionError: [Errno 13] Permission denied"错误.这个错误通常 ...
- python将列表写入文件_Python将列表数据写入文件(txt, csv,excel)
写入txt文件 def text_save(filename, data):#filename为写入CSV文件的路径,data为要写入数据列表. file = open(filename,'a') f ...
- python列表数据写入txt文件_Python将列表数据写入文件(txt, csv,excel)
写入txt文件 def text_save(filename, data):#filename为写入CSV文件的路径,data为要写入数据列表. file = open(filename,'a') f ...
- python作业:有一个学生成绩表,包括学号、姓名、高数、英语,计算机。 录入若干个学生学号、姓名、高数、英语,计算机5项数据。 将学生成绩表数据写入文件,文件名为“学生成绩表.txt
1.有一个学生成绩表,包括学号.姓名.高数.英语,计算机. 录入若干个学生学号.姓名.高数.英语,计算机5项数据. 将学生成绩表数据写入文件,文件名为"学生成绩表.txt import cs ...
- spark写表指定外部表_spark 将dataframe数据写入Hive分区表
从spark1.2 到spark1.3,spark SQL中的SchemaRDD变为了DataFrame,DataFrame相对于SchemaRDD有了较大改变,同时提供了更多好用且方便的API. D ...
最新文章
- thinkphp5项目--企业单车网站(七)
- 2017最新整理传智播客JavaEE第49期 基础就业班
- js基础--数据类型检测的相关知识
- qtreeview 点击二级节点弹出dialog_Flutter Toast、弹出提示、轻提示
- python sendto函数返回值_有返回值的函数amp;闭包(python)
- OAuth2,JWT,Open-ID Connect和其他令人困惑的事物
- 'parent.relativePath' points at no local POM
- perl java远程调用函数调用_如何从Java调用Perl?
- linux 权限管理命令chown、chgrp、umask、linux新建文件或目录的默认权限755
- 高通Android平台下关于display部分的几个关键问题
- [转载]Ubuntu 14.04设置固定ip
- 如何不如计算机科学,第四轮学科评估结果:西交不如华中武大,你怎么看?很多网友表示不满!...
- mfc连接access数据库
- 出国(澳大利亚)要求材料
- 端到端、序列到序列、pipeline理解
- 向量空间,子空间,列空间,零空间(PartIII)
- i++和++i的区别,+i+是什么?
- 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛
- 虚幻4渲染编程(图元汇编篇)【第五卷:游戏中的动力学模拟】
- apache Hop安装既部署问题收集