找回密码
 立即注册

协同程序

2022-2-21 06:32| 发布者: 笨鸟自学网| 查看: 2223| 评论: 0

摘要: 2.0 新版功能.刮痧partial support对于coroutine syntax.支持的可调用项¶以下可调用项可以定义为使用asyncdef,因此使用协同程序语法(例如。await,asyncfor,asyncwith):Request回电。注解在整个回调完成之前, ...


异步协同程序可用于调用。这包括其他协同程序、返回延迟的函数和返回的函数 awaitable objects 如 Future . 这意味着您可以使用许多有用的Python库来提供以下代码:

class MySpiderDeferred(Spider):
    # ...
    async def parse(self, response):
        additional_response = await treq.get('https://additional.url')
        additional_data = await treq.content(additional_response)
        # ... use response and additional_data to yield items and requests

class MySpiderAsyncio(Spider):
    # ...
    async def parse(self, response):
        async with aiohttp.ClientSession() as session:
            async with session.get('https://additional.url') as additional_response:
                additional_data = await additional_response.text()
        # ... use response and additional_data to yield items and requests

注解

例如许多类库 aio-libs ,需要 asyncio 循环并使用它们你需要 enable asyncio support in Scrapy .

注解

如果你想 await 在使用异步反应器时,您需要 wrap them 

异步代码的常见用例包括:

  • 从网站、数据库和其他服务(回调、管道和中间件)请求数据;

  • 在数据库中存储数据(在管道和中间件中);

  • 将spider初始化延迟到某个外部事件(在 spider_opened 经办人);

  • 调用诸如 ExecutionEngine.download (见 the screenshot pipeline example 

12
上一篇:作业:暂停和恢复爬行下一篇:asyncio

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2025-8-31 00:53 , Processed in 0.051418 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2017 Discuz Team. Template By 【未来科技】【 www.wekei.cn 】

返回顶部