Хотя невозможно поддерживать async def
функции в Python 2, возможно создать модуль, который включает async def
функции, которые импортируются только в Python 3.5 или более поздней версии. Но! Вероятно, существуют более эффективные способы решения этой проблемы, такие как помещение асинхронного кода в другой модуль, пакет или полностью отдельную библиотеку.
Пример, приведенный ниже, прямо относится к категории « Да, вы можете, но с какой стати? » Наивное тестирование показывает, что оно может работать на CPython 2.6.9–3.7. 3, с асинхронным кодом, загружаемым только в версии 3.5 или более поздней.
from __future__ import print_function
import sys
ASYNC_SOURCE = """
import asyncio
async def three():
print('three')
"""
if sys.version_info[0] > 2 and sys.version_info[1] > 4:
exec(compile(ASYNC_SOURCE, __file__, "exec"))
def two():
print("two")
if __name__ == "__main__":
two()
if "three" in locals():
asyncio.run(three())