Question: It looks that I came to the dead end. Is there any way to run scrapy spider inside asyncio loop? For example in the code below:

```
import asyncio
from scrapy.crawler import CrawlerProcess
from myscrapy import MySpider
import scrapy

async def do_some_work():
    process = CrawlerProcess()
    await process.crawl(MySpider)

loop = asyncio.get_even_loop()
loop.run_until_complete(do_some_work())

```

Which leads me to the error:

```
raise TypeError('A Future, a coroutine or an awaitable is required')
TypeError: A Future, a coroutine or an awaitable is required

```

I do understand that after await there should be another coroutine. Is there any way to bypass it and still make it work asynchronous? Thank you

Answer: 
Scrapy does not currently support the `async` syntax.

If you need to run Scrapy within asyncio-based code, you need to [run Scrapy as a script](http://doc.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script) it just as you would run any other synchronous code within an asynchronous function.

That said, it is something that might be available in the future. There has been a [Google Summer of Code proposal](http://gsoc2018.scrapinghub.com/ideas/#async-await-spiders) in that direction, and there is an [ongoing discussion on the topic](https://github.com/scrapy/scrapy/issues/3148).
The entire scrapy is synchronous code. No asynchronous mechanism(coroutine) to turn the running resource back to select loop whenever a blocking happen. 
The major blockings are the network requests. the libs scrapy uses don't support asyncio. So maybe you open the scrapy source code to implement asyncio or aiohttp to replace the original network libs, that would work. However above those libs, there is also the complex twisted module. (something like asyncio, though not so fast as asyncio, since python 2).Probably make it more difficult than build a new framework with asyncio from the ground up.