asyncio
ile python chat bot framework geliştiriyorum. Ama ben PEP-492'u izliyorum ve yeni sözdizimi, async
/await
ve sonunda kabul edildi.3.4 ve 3.5 arasında python'da coroutine, backwords uyumluluğunu nasıl saklayabilirim?
async
/await
sözdizimini seviyorum ve kullanmak istiyorum. ama 3.4 geri bildirim uyumluluğu hakkında endişeleniyorum.
Kodumda yeni sözdizimi kullanırsam, biri 3.4'te kullanabilir mi?
Örneğin, ben py34 await
sözdizimi yok, ben py35
loop = asyncio.get_event_loop() # I don't know it really needed in py35.
bot = ChatBot(loop)
asyncio.run_until_complete(bot.run())
bu kaynakla kullanabilirsiniz, bu gibi bazı kod,
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)
Daha yazma Ama. PyPI'da kaynak sınırlama olmaksızın, sürüm kısıtlaması olmadan yüklediysem ve birisi py34’e yüklediyse, iyi çalışır mı? Nasıl saklayabilirim?
Sadece en son Python sürümünde göründüğünde "eski" olarak tanımlanan '@ asyncio.coroutine 'yapısını görmek eğlenceli. :-) –
@MarkDickinson Gerçekten de. Python bu alanda oldukça hızlı gelişiyor. :) – dano
Python 2 ve Python 3 arasındaki geçiş çok kolay olduğu için Python topluluğu Python 3.4 ve Python 3.5 arasında geçişi basitleştirmeye karar verdi :-)? – z1naOK9nu8iY5A