рдлреЙрд╕реНрдЯрд╡рд░реАрд▓ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рдХрд╛рд░реНрдпреЗ, рднрд╛рдЧ I: рдкрд░рд┐рдЪрдп

рдлреЙрд╕реНрдЯрд╡рд░реАрд▓ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рдХрд╛рд░реНрдпреЗ, рднрд╛рдЧ I: рдкрд░рд┐рдЪрдп

рдорд▓рд╛ рдЕрд╕реЗ рдХрд╕реЗ рдЬрдЧрд╛рдпрд▓рд╛ рдЖрд▓реЗ?

рдХрд╛рд╣реА рдХрд╛рд│рд╛рдкреВрд░реНрд╡реА рдорд▓рд╛ рдПрдХрд╛ рдЕрддреНрдпрдВрдд рднрд╛рд░рд┐рдд рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдмреЕрдХрдПрдВрдбрд╡рд░ рдХрд╛рдо рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ рд╣реЛрддреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛ рдЖрдгрд┐ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдВрд╕рд╛рдареА рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╕рд╣ рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рдХрд╛рд░реНрдпрд╛рдВрдЪреА рдирд┐рдпрдорд┐рдд рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ. рдкреНрд░рдХрд▓реНрдк рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЖрд╣реЗ рдЖрдгрд┐ рдореА рдпреЗрдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдХреНрд░реЙрди-рд▓рд╛рдБрдЪрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рдПрдХ рд╕рд╛рдзреА рдпрдВрддреНрд░рдгрд╛ рд╣реЛрддреА: рд╡рд░реНрддрдорд╛рди рд╡реЗрд│ рддрдкрд╛рд╕рдгрд╛рд░реА рд▓реВрдк рдЖрдгрд┐ рдЧреЕрджрд░рджреНрд╡рд╛рд░реЗ рдХреЛрд░реЛрдЯреАрдирдЪреЗ рдЧрдЯ рд▓рд╛рдБрдЪ рдХрд░рдгреЗ - рд╣рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рдбрдЭрдирднрд░ рдЖрдгрд┐ рд╢реЗрдХрдбреЛ рдХреЙрд░реЛрдЯреАрди рд╣реЛрдИрдкрд░реНрдпрдВрдд рд╕реНрд╡реАрдХрд╛рд░реНрдп рдард░рд▓рд╛. рддрдерд╛рдкрд┐, рдЬреЗрд╡реНрд╣рд╛ рддреНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рджреЛрди рд╣рдЬрд╛рд░рд╛рдВрд╣реВрди рдЕрдзрд┐рдХ рдЭрд╛рд▓реА, рддреЗрд╡реНрд╣рд╛ рдорд▓рд╛ рджрд▓рд╛рд▓, рдЕрдиреЗрдХ рдХрд╛рдордЧрд╛рд░ рдЗрддреНрдпрд╛рджреАрдВрд╕рд╣ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рд░рд╛рдВрдЧ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрд▓рд╛.

рдкреНрд░рдердо рдореА рд╕реЗрд▓реЗрд░реА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛, рдЬреА рдореА рдЖрдзреА рд╡рд╛рдкрд░рд▓реА рд╣реЛрддреА. рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕реНрд╡рд░реВрдкрд╛рдореБрд│реЗ, рдореА рдкреНрд░рд╢реНрдирд╛рдд рдбреБрдмрдХреА рдорд╛рд░рд▓реА рдЖрдгрд┐ рдкрд╛рд╣рд┐рд▓реЗ рдПрдХ рд▓реЗрдЦрддрд╕реЗрдЪ рдкреНрд░рдХрд▓реНрдк, рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд▓реЗрдЦрдХрд╛рдиреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ.

рдореА рд╣реЗ рд╕рд╛рдВрдЧреЗрди, рд╣рд╛ рдкреНрд░рдХрд▓реНрдк рдЕрддрд┐рд╢рдп рдордиреЛрд░рдВрдЬрдХ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╕рдВрдШрд╛рдЪреНрдпрд╛ рдЗрддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдХрд╛рд░реНрдп рдХрд░рддреЛ рдЖрдгрд┐ рд▓реЗрдЦрдХ рд╕реНрд╡рддрдГ рдореНрд╣рдгрддреЛ рдХреА рддреЛ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреВрд▓ рд╡рд╛рдкрд░реВрди рдЙрддреНрдкрд╛рджрдирд╛рдд рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛. рдкрд░рдВрддреБ, рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рддреЗ рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдирд╡реНрд╣рддреЗ, рдЬрд╕реЗ рддреЗ рдмрд╛рд╣реЗрд░ рдкрдбрд▓реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрдЪреНрдпрд╛ рдЧрдЯ рд▓рд╛рдБрдЪрд╕рд╣ (рдкрд╣рд╛. рдЧрдЯ). рд▓реЗрдЦрдирд╛рдЪреНрдпрд╛ рд╡реЗрд│реА рд╕рдорд╕реНрдпрд╛ рдЖрдзреАрдЪ рдмрдВрдж рдЖрд╣реЗ, рдорд╛рддреНрд░ рдорд╣рд┐рдирд╛рднрд░рд╛рдкрд╛рд╕реВрди рдХрд╛рдо рд╕реБрд░реВ рдЖрд╣реЗ. рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рд▓реЗрдЦрдХрд╛рд▓рд╛ рд╢реБрднреЗрдЪреНрдЫрд╛ рдЖрдгрд┐ рд╢реБрднреЗрдЪреНрдЫрд╛, рдХрд╛рд░рдг lib рд╡рд░ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рдХрд╛рд░реНрдпрд░рдд рдЧреЛрд╖реНрдЯреА рдЖрд╣реЗрдд... рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдореБрджреНрджрд╛ рдорд╛рдЭреНрдпрд╛рдд рдЖрд╣реЗ рдЖрдгрд┐ рд╕рд╛рдзрди рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА рдУрд▓рд╕рд░ рдард░рд▓реЗ. рдпрд╛рд╢рд┐рд╡рд╛рдп, рдХрд╛рд╣реА рдЯрд╛рд╕реНрдХрдордзреНрдпреЗ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╕реЗрд╡рд╛рдВрд╕рд╛рдареА 2-3 HTTP рд╡рд┐рдирдВрддреНрдпрд╛ рд╣реЛрддреНрдпрд╛, рддреНрдпрд╛рдореБрд│реЗ рдЯрд╛рд╕реНрдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдд рдЕрд╕рддрд╛рдирд╛рд╣реА, рдЖрдореНрд╣реА 4 рд╣рдЬрд╛рд░ TCP рдХрдиреЗрдХреНрд╢рди рддрдпрд╛рд░ рдХрд░рддреЛ, рдЕрдВрджрд╛рдЬреЗ рджрд░ 2 рддрд╛рд╕рд╛рдВрдиреА - рдлрд╛рд░ рдЪрд╛рдВрдЧрд▓реЗ рдирд╛рд╣реА... рдорд▓рд╛ рдПрдХрд╛ рдкреНрд░рдХрд╛рд░рд╛рд╕рд╛рдареА рдПрдХ рд╕рддреНрд░ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ рдХрд╛рдордЧрд╛рд░ рд╕реБрд░реВ рдХрд░рддрд╛рдирд╛ рдХрд╛рд░реНрдп. aiohttp рджреНрд╡рд╛рд░реЗ рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рд╡рд┐рдирдВрддреНрдпрд╛рдВрдмрджреНрджрд▓ рдереЛрдбреЗ рдЕрдзрд┐рдХ рдпреЗрдереЗ.

рдпрд╛ рд╕рдВрджрд░реНрднрд╛рдд рдореА рдкрд╛рд╣реВ рд▓рд╛рдЧрд▓реЛ рдкрд░реНрдпрд╛рдп рдЖрдгрд┐ рддреЗ рд╕рд╛рдкрдбрд▓реЗ! рднрд╛рдЬреА рдХрд┐рдВрд╡рд╛ рдХреЛрд╢рд┐рдВрдмреАрд░ рдмрдирд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдЕрд╢реА рдПрдХ рд╡рдирд╕реНрдкрддреА рдирд┐рд░реНрдорд╛рддреЗ, рд╡рд┐рд╢реЗрд╖рддрдГ, рдорд▓рд╛ рд╕рдордЬрддреЗ рдореНрд╣рдгреВрди рд╕реЛрд▓реЗрдорд▓рд╛ рд╡рд┐рдЪрд╛рд░рд╛, рдирд┐рд░реНрдорд╛рдг рдХреЗрд▓реЗ рд╣реЛрддреЗ рдлреЙрд╕реНрдЯ, рдореВрд▓рддрдГ рдкреНрд░рдХрд▓реНрдкрд╛рд╕рд╛рдареА рд░реЙрдмрд┐рди рд╣реВрдб. рдлреЙрд╕реНрдЯ рдХрд╛рдлреНрдХрд╛ рд╕реНрдЯреНрд░реАрдореНрд╕рдкрд╛рд╕реВрди рдкреНрд░реЗрд░рд┐рдд рдЖрд╣реЗ рдЖрдгрд┐ рдХрд╛рдлреНрдХрд╛рд╕реЛрдмрдд рдмреНрд░реЛрдХрд░ рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рддреЛ, рдПрдЬрдВрдЯреНрд╕рдЪреНрдпрд╛ рдХрд╛рдорд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА rocksdb рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрддреНрд╡рд╛рдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рд▓рд╛рдпрдмреНрд░рд░реА рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЖрд╣реЗ.

рддрд╕реЗрдЪ, рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛ рджреНрд░реБрдд рддреБрд▓рдирд╛ рдирдВрддрд░рдЪреНрдпрд╛ рдирд┐рд░реНрдорд╛рддреНрдпрд╛рдВрдХрдбреВрди рд╕реЗрд▓реЗрд░реА рдЖрдгрд┐ рдлреЙрд╕реНрдЯ: рддреНрдпрд╛рдВрдЪреЗ рдорддрднреЗрдж, рдмреНрд░реЛрдХрд░реНрд╕рдордзреАрд▓ рдлрд░рдХ, рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░реНрдпрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрд╣реЗ, рддрдерд╛рдкрд┐, рдлреЙрд╕реНрдЯрдордзреАрд▓ рдПрдХ рдЫрд╛рди рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд▓рдХреНрд╖ рд╡реЗрдзреВрди рдШреЗрддреЗ - рд╡рд┐рд╖рдпрд╛рд╡рд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯрд╛рдЗрдк рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛.

рдЖрдореНрд╣реА рдХрд╛рдп рдХрд░реВ?

рддрд░, рд▓реЗрдЦрд╛рдВрдЪреНрдпрд╛ рдЫреЛрдЯреНрдпрд╛ рдорд╛рд▓рд┐рдХреЗрдд, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдлреЙрд╕реНрдЯ рд╡рд╛рдкрд░реВрди рдкрд╛рд░реНрд╢реНрд╡рднреВрдореАрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрдордзреВрди рдбреЗрдЯрд╛ рдХрд╕рд╛ рдЧреЛрд│рд╛ рдХрд░рд╛рдпрдЪрд╛ рддреЗ рджрд╛рдЦрд╡рддреЛ. рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдХрд▓реНрдкрд╛рдЪрд╛ рд╕реНрддреНрд░реЛрдд рдирд╛рд╡рд╛рдкреНрд░рдорд╛рдгреЗрдЪ рдЕрд╕реЗрд▓, alphavantage.co. рдореА рдПрдЬрдВрдЯреНрд╕ (рд╕рд┐рдВрдХ, рд╡рд┐рд╖рдп, рд╡рд┐рднрд╛рдЬрдиреЗ) рдХрд╕реЗ рд▓рд┐рд╣рд╛рд╡реЗрдд, рдирд┐рдпрдорд┐рдд (рдХреНрд░реЙрди) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд╕реЗ рдХрд░рд╛рд╡реЗ, рд╕рд░реНрд╡рд╛рдд рд╕реЛрдпреАрд╕реНрдХрд░ рдлреЙрд╕реНрдЯ рдХреНрд▓реА рдХрдорд╛рдВрдбреНрд╕ (рдХреНрд▓рд┐рдХ рдУрд╡реНрд╣рд░ рд░реЕрдкрд░), рд╕рд╛рдзреЗ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рд╣реЗ рджрд╛рдЦрд╡реВрди рджреЗрдИрди рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рдЖрдореНрд╣реА рдбреЗрдЯрд╛рдбреЙрдЧ рдЬреЛрдбреВ ( рдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЗ) рдЖрдгрд┐ рдХрд╛рд╣реАрддрд░реА рдкрд╛рд╣рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛. рдЧреЛрд│рд╛ рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдХрдиреЗрдХреНрд╢рдирд╕рд╛рдареА mongodb рдЖрдгрд┐ рдореЛрдЯрд░ рд╡рд╛рдкрд░реВ.

рдирд┐рд░реАрдХреНрд╖рдгрд╛рдЪрд╛ рдореБрджреНрджрд╛ рдЬреНрдпрд╛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рдиреЗ рд▓рд┐рд╣рд┐рд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ рддреНрдпрд╛рдЪрд╛ рдЖрдзрд╛рд░ рдШреЗрдд, рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рд╡рд╛рдЪрдХ рдЕрдЬреВрдирд╣реА рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рджрд┐рд╕реЗрд▓:

рдлреЙрд╕реНрдЯрд╡рд░реАрд▓ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рдХрд╛рд░реНрдпреЗ, рднрд╛рдЧ I: рдкрд░рд┐рдЪрдп

рдкреНрд░рдХрд▓реНрдк рдЖрд╡рд╢реНрдпрдХрддрд╛

рдореА рдЖрдзреАрдЪ рд╡рдЪрди рджрд┐рд▓реЗ рдЖрд╣реЗ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдореБрд│реЗ, рд╕реЗрд╡рд╛ рдХрд╛рдп рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕рд╛рд╡реА рдпрд╛рдЪреА рдПрдХ рдЫреЛрдЯреА рдпрд╛рджреА рдмрдирд╡реВрдпрд╛:

  1. рд╕рд┐рдХреНрдпреБрд░рд┐рдЯреАрдЬ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдЕрдкрд▓реЛрдб рдХрд░рд╛ (рдирдлрд╛ рдЖрдгрд┐ рддреЛрдЯрд╛, рддрд╛рд│реЗрдмрдВрдж, рд░реЛрдЦ рдкреНрд░рд╡рд╛рд╣ - рдорд╛рдЧреАрд▓ рд╡рд░реНрд╖рд╛рд╕рд╛рдареА) - рдирд┐рдпрдорд┐рддрдкрдгреЗ
  2. рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рд╛ (рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд░реЗрдбрд┐рдВрдЧ рд╡рд░реНрд╖рд╛рд╕рд╛рдареА, рдЯреНрд░реЗрдбрд┐рдВрдЧрдЪреНрдпрд╛ рдмрдВрдж рдХрд┐рдВрдорддреАрдЪреА рдЕрддреНрдпрдВрдд рдореВрд▓реНрдпреЗ рд╢реЛрдзрд╛) - рдирд┐рдпрдорд┐рддрдкрдгреЗ
  3. рдирд╡реАрдирддрдо рдЯреНрд░реЗрдбрд┐рдВрдЧ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рд╛ - рдирд┐рдпрдорд┐рддрдкрдгреЗ
  4. рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрд╕рд╛рдареА рд╕рдВрдХреЗрддрдХрд╛рдВрдЪреА рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рд╕реВрдЪреА рдЕрдкрд▓реЛрдб рдХрд░рд╛ - рдирд┐рдпрдорд┐рддрдкрдгреЗ

рдЕрдкреЗрдХреНрд╖реЗрдкреНрд░рдорд╛рдгреЗ, рдЖрдореНрд╣реА рд╕реБрд░рд╡рд╛рддреАрдкрд╛рд╕реВрди рдкреНрд░рдХрд▓реНрдкрд╛рд╕рд╛рдареА рдирд╛рд╡ рдирд┐рд╡рдбрддреЛ: рд╣реЙрд░реНрдЯрди

рдЖрдореНрд╣реА рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЛрдд

рд╢реАрд░реНрд╖рдХ рдирдХреНрдХреАрдЪ рдордЬрдмреВрдд рдЖрд╣реЗ, рддрдерд╛рдкрд┐, рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╕рд╛рдареА рдХрд╛рдлреНрдХрд╛ (рдЖрдгрд┐ рдкреНрд░рд╛рдгреАрд╕рдВрдЧреНрд░рд╣рд╛рд▓рдп - рдПрдХрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ), рдХрд╛рдлреНрдбреНрд░реЙрдк (рдЬрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рд╖рдпрд╛рдВрдордзреАрд▓ рд╕рдВрджреЗрд╢ рдкрд╣рд╛рдпрдЪреЗ рдЕрд╕рддреАрд▓ рддрд░), рдореЛрдВрдЧреЛрдбрдмрд╕рд╣ рдПрдХ рд▓рд╣рд╛рди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд▓рд┐рд╣рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рдЖрдореНрд╣рд╛рд▓рд╛ рдорд┐рд│рддреЗ [docker-compose.yml](https://github.com/Egnod/horton/blob/562fa5ec14df952cd74760acf76e141707d2ef58/docker-compose.yml) рдЦрд╛рд▓реАрд▓ рдлреЙрд░реНрдордЪреЗ:

version: '3'

services:
  db:
    container_name: horton-mongodb-local
    image: mongo:4.2-bionic
    command: mongod --port 20017
    restart: always
    ports:
      - 20017:20017
    environment:
      - MONGO_INITDB_DATABASE=horton
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=admin_password

  kafka-service:
    container_name: horton-kafka-local
    image: obsidiandynamics/kafka
    restart: always
    ports:
      - "2181:2181"
      - "9092:9092"
    environment:
      KAFKA_LISTENERS: "INTERNAL://:29092,EXTERNAL://:9092"
      KAFKA_ADVERTISED_LISTENERS: "INTERNAL://kafka-service:29092,EXTERNAL://localhost:9092"
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT"
      KAFKA_INTER_BROKER_LISTENER_NAME: "INTERNAL"
      KAFKA_ZOOKEEPER_SESSION_TIMEOUT: "6000"
      KAFKA_RESTART_ATTEMPTS: "10"
      KAFKA_RESTART_DELAY: "5"
      ZOOKEEPER_AUTOPURGE_PURGE_INTERVAL: "0"

  kafdrop:
    container_name: horton-kafdrop-local
    image: 'obsidiandynamics/kafdrop:latest'
    restart: always
    ports:
      - '9000:9000'
    environment:
      KAFKA_BROKERCONNECT: kafka-service:29092
    depends_on:
      - kafka-service

рдпреЗрдереЗ рдХрд╛рд╣реАрд╣реА рдХреНрд▓рд┐рд╖реНрдЯ рдирд╛рд╣реА. рдХрд╛рдлреНрдХрд╛рд╕рд╛рдареА рджреЛрди рд╢реНрд░реЛрддреЗ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ: рдПрдХ (рдЕрдВрддрд░реНрдЧрдд) рд╕рдВрдпреБрдХреНрдд рдиреЗрдЯрд╡рд░реНрдХрдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рджреБрд╕рд░рд╛ (рдмрд╛рд╣реНрдп) рдмрд╛рд╣реЗрд░реВрди рдЖрд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╕рд╛рдареА, рдореНрд╣рдгреВрди рддреНрдпрд╛рдВрдиреА рддреЗ рдмрд╛рд╣реЗрд░ рдкрд╛рдард╡рд▓реЗ. 2181 - рдЭреВрдХреАрдкрд░ рдкреЛрд░реНрдЯ. рдмрд╛рдХреА, рдорд▓рд╛ рд╡рд╛рдЯрддреЗ, рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ.

рдкреНрд░рдХрд▓реНрдкрд╛рдЪрд╛ рд╕рд╛рдВрдЧрд╛рдбрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдореВрд│ рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ, рдЖрдордЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рд░рдЪрдирд╛ рдЕрд╢реА рджрд┐рд╕рд▓реА рдкрд╛рд╣рд┐рдЬреЗ:

horton
тФЬтФАтФА docker-compose.yml
тФФтФАтФА horton
    тФЬтФАтФА agents.py *
    тФЬтФАтФА alphavantage.py *
    тФЬтФАтФА app.py *
    тФЬтФАтФА config.py
    тФЬтФАтФА database
    тФВ   тФЬтФАтФА connect.py
    тФВ   тФЬтФАтФА cruds
    тФВ   тФВ   тФЬтФАтФА base.py
    тФВ   тФВ   тФЬтФАтФА __init__.py
    тФВ   тФВ   тФФтФАтФА security.py *
    тФВ   тФФтФАтФА __init__.py
    тФЬтФАтФА __init__.py
    тФЬтФАтФА records.py *
    тФФтФАтФА tasks.py *

*рд╕рд░реНрд╡ рдХрд╛рд╣реА рдореА рдиреЛрдВрджрд╡рд▓реЗ рдЖрдореНрд╣реА рдЕрджреНрдпрд╛рдк рддреНрдпрд╛рд╕ рд╕реНрдкрд░реНрд╢ рдХрд░рдд рдирд╛рд╣реА, рдЖрдореНрд╣реА рдлрдХреНрдд рд░рд┐рдХреНрдд рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рддреЛ.**

рдЖрдореНрд╣реА рдПрдХ рд░рдЪрдирд╛ рддрдпрд╛рд░ рдХреЗрд▓реА. рдЖрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рд▓рдВрдмрди рдЬреЛрдбреВ, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд▓рд┐рд╣реВ рдЖрдгрд┐ mongodb рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░реВ. рдореА рд▓реЗрдЦрд╛рддреАрд▓ рдлрд╛рдпрд▓реАрдВрдЪрд╛ рд╕рдВрдкреВрд░реНрдг рдордЬрдХреВрд░ рдкреНрд░рджрд╛рди рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдЬреЗрдгреЗрдХрд░реВрди рдЙрд╢реАрд░ рд╣реЛрдК рдирдпреЗ, рдкрд░рдВрддреБ рдореА рдЖрд╡рд╢реНрдпрдХ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪреЗ рджреБрд╡реЗ рдкреНрд░рджрд╛рди рдХрд░реЗрди.

рдЪрд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдмрджреНрджрд▓ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдЖрдгрд┐ рдореЗрдЯрд╛рд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░реВрдпрд╛ - pyproject.toml

рдкреБрдвреЗ, рдЖрдореНрд╣реА рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рд╡реНрд╣рд░реНрдЪреБрдЕрд▓реЗрдирд╡реНрд╣ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╕реБрд░реВ рдХрд░рддреЛ (рдХрд┐рдВрд╡рд╛ рддреБрдореНрд╣реА рд╕реНрд╡рддрдГ venv рдлреЛрд▓реНрдбрд░ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдХреНрд░рд┐рдп рдХрд░реВ рд╢рдХрддрд╛):

pip3 install poetry (╨╡╤Б╨╗╨╕ ╨╡╤Й╤С ╨╜╨╡ ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╗╨╡╨╜╨╛)
poetry install

рдЖрддрд╛ рддрдпрд╛рд░ рдХрд░реВ config.yml - рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓ рдЖрдгрд┐ рдХреБрдареЗ рдареЛрдХрд╛рдпрдЪреЗ. рддреБрдореНрд╣реА рддреЗрдереЗ рдЕрд▓реНрдлрд╛рд╡реНрд╣рдВрдЯреЗрдЬрд╕рд╛рдареА рддреНрд╡рд░рд┐рдд рдбреЗрдЯрд╛ рдареЗрд╡реВ рд╢рдХрддрд╛. рдмрд░рдВ, рдЪрд▓рд╛ рдкреБрдвреЗ рдЬрд╛рдКрдпрд╛ config.py - рдЖрдордЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреВрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рдбреЗрдЯрд╛ рдХрд╛рдврд╛. рд╣реЛрдп, рдореА рдХрдмреВрд▓ рдХрд░рддреЛ, рдореА рдорд╛рдЭреА рд▓рд┐рдм рд╡рд╛рдкрд░рд▓реА - рд╕реАрддреНрд░реА.

рдореЛрдВрдЧреЛрд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛рдирд╛, рд╕рд░реНрд╡рдХрд╛рд╣реА рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрд╣реЗ. рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рдЧреНрд░рд╛рд╣рдХ рд╡рд░реНрдЧ рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдмреЗрд╕ рд╡рд░реНрдЧ cruds рд╕рд╛рдареА, рд╕рдВрдЧреНрд░рд╣рд╛рдВрд╡рд░ рдХреНрд╡реЗрд░реА рдХрд░рдгреЗ рд╕реЛрдкреЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

рдкреБрдвреЗ рдХрд╛рдп рд╣реЛрдгрд╛рд░?

рд▓реЗрдЦ рдлрд╛рд░ рдореЛрдард╛ рдирд╛рд╣реА, рдХрд╛рд░рдг рдореА рдпреЗрдереЗ рдлрдХреНрдд рдкреНрд░реЗрд░рдгрд╛ рдЖрдгрд┐ рддрдпрд╛рд░реАрдмрджреНрджрд▓ рдмреЛрд▓рдд рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдорд▓рд╛ рджреЛрд╖ рджреЗрдК рдирдХрд╛ - рдореА рд╡рдЪрди рджреЗрддреЛ рдХреА рдкреБрдвреАрд▓ рднрд╛рдЧрд╛рдд рдХреГрддреА рдЖрдгрд┐ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЕрд╕рддреАрд▓.

рддрд░, рдпрд╛ рдкреБрдврдЪреНрдпрд╛ рднрд╛рдЧрд╛рдд рдЖрдореНрд╣реА:

  1. рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕рдЪреНрдпрд╛ рд╡рд┐рдирдВрддреАрд╕рд╣ aiohttp рд╡рд░ alphavantage рд╕рд╛рдареА рдПрдХ рд▓рд╣рд╛рди рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд┐рд╣реВрдпрд╛.
  2. рдЪрд▓рд╛ рдПрдХ рдПрдЬрдВрдЯ рддрдпрд╛рд░ рдХрд░реВрдпрд╛ рдЬреЛ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рд╕рд┐рдХреНрдпреБрд░рд┐рдЯреАрдЬ рдЖрдгрд┐ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдХрд┐рдВрдорддреАрдВрдЪрд╛ рдбреЗрдЯрд╛ рдЧреЛрд│рд╛ рдХрд░реЗрд▓.

рдкреНрд░рдХрд▓реНрдк рдХреЛрдб

рдпрд╛ рднрд╛рдЧрд╛рд╕рд╛рдареА рдХреЛрдб

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛