Я занимаюсь разработкой poton chatting bot framework с помощью asyncio
. Но я смотрю PEP-492 и появляется новый синтаксис async
/await
и, наконец, он принят.
Мне нравится синтаксис async
/await
, и я хочу его использовать. но я беспокоюсь о совместимости с 3.4 паролями.
Если я использую новый синтаксис в своем коде, кто-то может использовать его в 3.4?
Например, я пишу код такой,
import asyncio
class ChatBot:
def __init__(self, loop):
self.loop = loop
async def connect(self):
self.reader, self.writer = await asyncio.open_connect(HOST, PORT, loop=self.loop)
async def read():
return await self.reader.read()
async def run(self):
running = True
while running:
try:
await self.connect()
line = await self.read()
if not line:
continue
await self.parse(line)
except BotInternalError as e:
if e.stop:
running = False
break
except:
pass
async def parse(self, msg):
if msg.startswith('PING'):
self.pong()
elif msg.startswith('ERROR'):
self.error()
else:
await self.some_work(msg)
async def some_work(self, msg):
# some looooooooong works
self.send(msg)
def send(self, msg):
self.writer.write(msg)
Чем я могу использовать его с этим источником в py35
loop = asyncio.get_event_loop() # I don't know it really needed in py35.
bot = ChatBot(loop)
asyncio.run_until_complete(bot.run())
Но py34 не имеет синтаксиса await
. Если я загрузил выше источник в PyPI без ограничения версии и кто-то установил его на py34, он будет работать нормально? Как я могу его сохранить?