作為一個新手,我被困在這里,如果你能提供幫助,我將不勝感激。
- 有沒有辦法縮短/合并以下異步任務?
- 如何永遠每隔 n 秒重復這些任務集?
先感謝您。
def get_tasks1(session1):
task1 = []
for symbol in symbols:
task1.append(asyncio.create_task(session1.get(url1.format(symbol))))
return task1
async def get_symbols1():
async with aiohttp.ClientSession() as session1:
task1 = get_tasks1(session1)
responses = await asyncio.gather(*task1)
for response in responses:
results1.append(await response.json())
def get_tasks2(session2):
task2 = []
for symbol in symbols:
task2.append(asyncio.create_task(session2.get(url2.format(symbol))))
return task2
async def get_symbols2():
async with aiohttp.ClientSession() as session2:
task2 = get_tasks2(session2)
responses = await asyncio.gather(*task2)
for response in responses:
results2.append(await response.json())
asyncio.run(get_symbols1())
asyncio.run(get_symbols2())
with open("Output.txt", "w") as text_file:
text_file.write('%r\n%r\n' % (results1, results2))
uj5u.com熱心網友回復:
如果您的問題很實用(您想解決任務而不是深入學習異步),我建議:
使用grequests包,它基于流行的requests包來查詢 url。
如果將來你想對接收到的資料執行一些操作,你可能會想要使用Scrapy
每 N 秒運行一次操作:
from time import sleep
def operations():
asyncio.run(get_symbols1())
asyncio.run(get_symbols2())
with open("Output.txt", "w") as text_file:
text_file.write('%r\n%r\n' % (results1, results2))
while True:
sleep(60) # 60 seconds
operations()
但是把它放在腳本本身上是不安全的(可能記憶體泄漏,行程可能被作業系統終止......),所以考慮使用 cron(如果周期超過 1 分鐘)或任何其他外部工具,它將運行你的定期撰寫腳本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/410858.html
標籤:
