语法错误:'await'外部函数

时间:2019-10-19 06:19:10

标签: python python-3.x darksky

你好,我是python的新手,正在尝试使用Detrous制作的Dark Sky python API。当我运行演示代码时,出现错误:

forecast = await darksky.get_forecast(
              ^
SyntaxError: 'await' outside function

此错误的产生原因:

forecast = await darksky.get_forecast(
    latitude, longitude,
    extend=False, # default `False`
    lang=languages.ENGLISH, # default `ENGLISH`
    units=units.AUTO, # default `auto`
    exclude=[weather.MINUTELY, weather.ALERTS] # default `[]`
)

我不太确定如何解决此问题,并且正在使用python 3。

谢谢

2 个答案:

答案 0 :(得分:0)

await关键字只能在异步函数和方法中使用。您可以阅读有关异步代码的更多信息,以了解原因。

该解决方案是使用darksky = DarkSky(API_KEY)而不是darksky = DarkSkyAsync(API_KEY),而没有您要完成的工作以及如何完成的任何细节。

答案 1 :(得分:0)

我认为此答案对搜索与我相同的问题的人很有用。 要在同步上下文中使用异步函数,可以使用事件循环。您可以出于教育目的从头开始编写它。 您可以从这个答案开始 https://stackoverflow.com/a/51116910/14154287 并继续接受David Beazley的书籍进行教学。

但是asyncio的开发人员已经为您做到了。

import asyncio

loop = asyncio.get_event_loop()
forecast = loop.run_until_complete(darksky.get_forecast(...<here place arguments>...))
loop.close()