Asyncio рдореЗрдВ ZeroMQ рдФрд░ PostgreSQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

рд╢рд╛рдпрдж рд╣рд░ рдХреЛрдИ рдЕрджреНрднреБрдд asyncio рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ?

рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╛рдпрдерди рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдмрди рдЧрдпрд╛ рд╣реИред рдмрд╡рдВрдбрд░ рдФрд░ рдореБрдбрд╝ рдпрд╛ рддреЛ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реАрдЦреЗрдВрдЧреЗ рдпрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рд╣рд╛рд╢рд┐рдП рдкрд░ рдЪрд▓реЗ рдЬрд╛рдПрдВрдЧреЗред

рдПрд╕рд┐рдВрдХреЛрдпреЛ рдорд╣рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЯреАрд╕реАрдкреА , рдпреВрдбреАрдкреА , рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯреНрд╕, рдкреАрдЖрдИрдкреАрдИрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ , рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдкреНрд░рдХрд╛рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рд╕рднреА рдХреЛ рдорд╣рд╛рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрд╕рд┐рдВрдХреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЬреЛрдбрд╝реА рдмрдирд╛рдИ: рдПрдХ рдЬреАрд░реЛрдПрдордХреНрдпреВ рдХреЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░рд╛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдХреЗ рд▓рд┐рдП

рдпрджрд┐ рдЖрдк рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдЬрдЧрд░ 2 рдкрд░ рдмреИрдарддреЗ рд╣реИрдВ рдФрд░ рдЕрдЬрдЧрд░ 3 рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ - рдмреЗрд╡рдХреВрдл рд╕рд╡рд╛рд▓реЛрдВ рдФрд░ рдЕрдиреНрдп рдЧрд▓рддрдлрд╣рдореА рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдордд рдЬрд╛рдУ ред


рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдереА?

рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ ZeroMQ рдФрд░ Postgress рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИред рдореИрдВ asyncio рдкрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рд╛рдкрддрд╛ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдХрд╛рдЯрдирд╛ рдкрдбрд╝рд╛ред

рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рджреЛрдиреЛрдВ рдареЛрд╕ рд╣реИрдВред рдореИрдВ рдкрд╛рдпрдерди рдХреЛрд░ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ рдФрд░ asyncio рдХреЛрдб рдореЗрдВ рднреА рдореЗрд░рд╛ рдмрд╣реБрдд рдХрд╛рдо рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ рдХрд┐ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдирд╛ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЦреБрдж рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреАред

рдкреНрд▓рд╕ (рд▓рдЧрднрдЧ) рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕реНрдкрд╖реНрдЯ (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ) рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХреЛрдб рдХрд╛ 100% рдХрд╡рд░реЗрдЬред

aiozmq - рдЖрдк asyncio рдХреЗ рд╕рд╛рде ZeroMQ рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдкреНрд░рд▓реЗрдЦрди рдпрд╣рд╛рдБ рд╣реИ ред

aiozmq рдирд┐рдореНрди-рд╕реНрддрд░реАрдп ZeroMQ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд░рд┐рдореЛрдЯ рдкреНрд░реЛрд╕реАрдЬрд░ рдХреЙрд▓ рддрдВрддреНрд░ (рдкреНрд▓рд╕ рдкрдмрд╕рдм рдФрд░ рдиреЛрдЯрд┐рдлрд╛рдИ) рджреЗрддрд╛ рд╣реИред

рдПрдХ рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг:

import asyncio import aiozmq import aiozmq.rpc class ServerHandler(aiozmq.rpc.AttrHandler): @aiozmq.rpc.method def remote_func(self, a:int, b:int) -> int: return a + b @asyncio.coroutine def go(): server = yield from aiozmq.rpc.start_server( ServerHandler(), bind='tcp://127.0.0.1:5555') client = yield from aiozmq.rpc.open_client( connect='tcp://127.0.0.1:5555') ret = yield from client.rpc.remote_func(1, 2) assert 3 == ret server.close() client.close() asyncio.set_event_loop_policy(aiozmq.ZmqEventLoopPolicy()) asyncio.get_event_loop().run_until_complete(go()) 


рдЕрдм рдЪрд▓реЛ aiopg рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ

рдпрд╣ lib psynopg2 рдХреЗ рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рджреЗрддрд╛ рд╣реИ

рдкреНрд░рд▓реЗрдЦрди рдпрд╣рд╛рдБ рд╣реИ ред

  @asyncio.coroutine def test_select(): pool = yield from aiopg.create_pool(dsn) with (yield from pool.cursor()) as cur: yield from cur.execute('SELECT 1') ret = yield from cur.fetchone() assert ret == (1,), ret 


рджреЛрдиреЛрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ: aiozmq рдФрд░ aiopg

рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рддреЛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдмрдЧ рдвреВрдВрдвреЗрдВ - рдореБрджреНрджреЛрдВ рдореЗрдВ рдЧреАрдереВрдм рдкрд░ рд▓рд┐рдЦреЗрдВ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рддреБрд░рдВрдд рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ

Source: https://habr.com/ru/post/In218423/


All Articles