Py学习  »  Python

Python:如何创建一个函数,从url获取数据并将其异步发送到其他位置?

Eric Lee • 4 年前 • 1551 次点击  

我试图理解异步编程。

所以我做了一个小的异步函数。

我做的功能是,它从多个网站读取内容,并将它们异步发送到特定的URL。

我写了一个类似这样的异步函数

import requests
import asyncio

getter_sender_list = [
    ('https://google.com', 'http://localhost:5000/receiver_1'),
    ('https://yahoo.com', 'http://localhost:5000/receiver_2'),
    ('https://stackoverflow.com', 'http://localhost:5000/receiver_3'),
]

def main():
    async def transfer_data(getter, sender):
        r = await loop.run_in_executor(None, requests.get(getter))
        data = r.content
        res = await loop.run_in_executor(None, requests.post(sender, data=data))
        print('Single Transfer Complete')

    async def transfer_all():
        coroutines = [transfer_data(getter, sender) for getter, sender in getter_sender_list]
        await asyncio.gather(*coroutines)
        print('TRANSFER COMPLETE')

    loop = asyncio.get_event_loop()
    loop.run_until_complete(transfer_all())

我采取的方法正确吗?

或者我需要考虑一些不同的东西吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129676
文章 [ 1 ]  |  最新文章 4 年前