标签: fme

如何从同步代码Python调用异步函数

因此,我被锁定在桌面应用程序之后的python 3.6.2解释器中。

我想要的是从同步方法或函数调用异步函数。

从桌面应用程序调用python函数时,它必须是无法等待的普通函数。

我可以从桌面应用程序发送一个URL列表,而我想要的是在异步情况下从每个URL发送回响应。

这是我的尝试,我已将SyntaxError标记为我不知道如何绕过。

import fmeobjects
import asyncio
import aiohttp
import async_timeout
logger = fmeobjects.FMELogFile()
timeout = 10

class FeatureProcessor(object):
    def __init__(self):
        pass
    def input(self, feature):
        urls_and_coords = zip(feature.getAttribute('_list{}._wms'),\
        feature.getAttribute('_list{}._xmin'),\
        feature.getAttribute('_list{}._ymin'),\
        feature.getAttribute('_list{}._xmax'),\
        feature.getAttribute('_list{}._ymax'))
        -> SyntaxError: newfeature = await main(urls_and_coords)
        self.pyoutput(newfeature)

    def close(self):
       pass 

async def main(urls):
    loop = asyncio.get_event_loop()
    async with aiohttp.ClientSession(loop=loop) as session:
        feature = loop.run_until_complete(fetch_all(session, urls, loop))
        return feature

async def fetch_all(session, urls, loop):
    results = await asyncio.gather(*[loop.create_task(fetch(session, url)) for url in urls])
    return results


async …
Run Code Online (Sandbox Code Playgroud)

python asynchronous python-3.6 fme

5
推荐指数
3
解决办法
5336
查看次数

标签 统计

asynchronous ×1

fme ×1

python ×1

python-3.6 ×1