Хранение значений атрибутов с помощью asyncio - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь следующий код:

    import asyncio
    import smmrpy

    s = smmrpy.SMMRPY("286C6866B9")
    URL = 'https://stackoverflow.blog/2018/09/13/ibm-and-stack-overflow-partner-to-support-ai-developers/'

    async def main():
        article = await s.get_smmry(URL)

        print(article.content)
        print(article.keywords)

    if __name__ == "__main__":
        loop = asyncio.get_event_loop()
        loop.run_until_complete(main())

, который суммирует веб-сайты, используя SMMRY (https://smmry.com/) и asyncio (предоставляется ключ API для 100 запросов). Модуль smmrpy создает "article "и хотя он может печатать свойства, я не могу сохранить их в переменной / списке, как обычно, например:

    import asyncio
    import smmrpy

    s = smmrpy.SMMRPY("286C6866B9")
    URL = 'https://stackoverflow.blog/2018/09/13/ibm-and-stack-overflow-partner-to-support-ai-developers/'

    async def main():
        article = await s.get_smmry(URL)

        print(article.content)
        print(article.keywords)
        # option 1:
        # content = article.content
        # option 2:
        # return article
        # content = getattr(article, 'content')     

    if __name__ == "__main__":
        loop = asyncio.get_event_loop()
        loop.run_until_complete(main())

Что я хотел бы сделать, это сохранитьЗначение атрибута в переменной для дальнейшего экспорта. Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 24 сентября 2018

Проблема найдена, проблема была с переменной областью видимости.Переменная внутри функции является локальной переменной и не может быть вызвана глобально, определяя это внутри функции.Этот блок устраняет проблему и печатает дважды без ошибок:

import asyncio
import smmrpy

s = smmrpy.SMMRPY("286C6866B9")
URL = 'https://stackoverflow.blog/2018/09/13/ibm-and-stack-overflow-partner-to-support-ai-developers/'

async def main():
    article = await s.get_smmry(URL)
    global contents
    contents = article.content  
    print(contents) 
    print(article.keywords)

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

print(contents)
...