Faust рдорд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпрд╣рд░реВ, рднрд╛рдЧ I: рдкрд░рд┐рдЪрдп

Faust рдорд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпрд╣рд░реВ, рднрд╛рдЧ I: рдкрд░рд┐рдЪрдп

рдо рдХрд╕рд░реА рдпрд╕рд░реА рдмрд╛рдБрдЪреНрди рдЖрдПрдБ?

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

рдкрд╣рд┐рд▓реЗ рдореИрд▓реЗ рд╕реЗрд▓рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ, рдЬреБрди рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ рдерд┐рдПрдБред рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдкреНрд░рдХреГрддрд┐рдХреЛ рдХрд╛рд░рдг, рдореИрд▓реЗ рдкреНрд░рд╢реНрдирдорд╛ рдбреБрдмреНрдпреЛ рд░ рд╣реЗрд░реНрдиреБрднрдпреЛ рд▓реЗрдЦ, рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рд▓реЗрдЦ рдХреЛ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИрдПрдХреЛред

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

рдпрд╕реИ рд╕рдиреНрджрд░реНрднрдорд╛ рдореИрд▓реЗ рдЦреЛрдЬреНрди рдерд╛рд▓реЗрдБ рд╡рд┐рдХрд▓реНрдк рд░ рдпреЛ рдлреЗрд▓рд╛ рдкрд░реНрдпреЛ! рдЕрдЬрд╡рд╛рдЗрдирдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛рд╣рд░реВ, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдореИрд▓реЗ рдмреБрдЭреЗрдХреЛ рд░реВрдкрдорд╛ рд╕реЛрд▓реЗрдорд▓рд╛рдИ рд╕реЛрдзреНрдиреБрд╣реЛрд╕реН, рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ Faust, рдореВрд▓ рд░реВрдкрдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рд░реЛрдмрд┐рдирд╣реБрдбред Faust рдХрд╛рдлреНрдХрд╛ рд╕реНрдЯреНрд░рд┐рдореНрд╕рдмрд╛рдЯ рдкреНрд░реЗрд░рд┐рдд рдЫ рд░ рдХрд╛рдлреНрдХрд╛рд╕рдБрдЧ рдмреНрд░реЛрдХрд░рдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ, рд░рдХреНрд╕рдбреАрдмреА рдПрдЬреЗрдиреНрдЯрд╣рд░реВрдХреЛ рдХрд╛рдордмрд╛рдЯ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд░ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рд╣реЛред

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

рд╣рд╛рдореА рдХреЗ рдЧрд░реНрдЫреМ?

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

PS рдЕрдиреБрдЧрдордирдХреЛ рдмрд╛рд░реЗрдорд╛ рдмрд┐рдиреНрджреБ рд▓реЗрдЦрд┐рдПрдХреЛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕рдХреЛ рдЖрдзрд╛рд░рдорд╛, рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ рдЕрдиреНрддрд┐рдо рд▓реЗрдЦрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдкрд╛рдардХ рдЕрдЭреИ рдкрдирд┐ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

Faust рдорд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпрд╣рд░реВ, рднрд╛рдЧ I: рдкрд░рд┐рдЪрдп

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ

рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╡рд╛рдЪрд╛ рдЧрд░реЗрдХреЛ рддрдереНрдпрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛, рд╕реЗрд╡рд╛рд▓реЗ рдХреЗ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫ рднрдиреНрдиреЗ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рд╕реВрдЪреА рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН:

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

рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдкрдорд╛, рд╣рд╛рдореА рд╕реНрдХреНрд░реНрдпрд╛рдЪрдмрд╛рдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдирд╛рдо рдЫрдиреМрдЯ рдЧрд░реНрдЫреМрдВ: рд╣реЛрд░реНрдЯрди

рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдХреЛ рддрдпрд╛рд░реА рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ

рд╢реАрд░реНрд╖рдХ рдкрдХреНрдХреИ рдкрдирд┐ рдмрд▓рд┐рдпреЛ рдЫ, рддрдерд╛рдкрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдбрдХрд░-рдХрдореНрдкреЛрдЬрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдлреНрдХрд╛ (рд░ zookeeper - рдПрдЙрдЯрд╛ рдХрдиреНрдЯреЗрдирд░рдорд╛), kafdrop (рдпрджрд┐ рд╣рд╛рдореА рд╡рд┐рд╖рдпрд╣рд░реВрдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рд╣реЗрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ), mongodb рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд▓реЗрдЦреНрдиреБ рдкрд░реНрдЫред рд╣рд╛рдореАрд▓реЗ рдкрд╛рдпреМ [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

рдЕрд░реНрдХреЛ, рд╣рд╛рдореА рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ virtualenv рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ (рд╡рд╛ рддрдкрд╛рдИрдВрд▓реЗ venv рдлреЛрд▓реНрдбрд░ рдЖрдлреИрдВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдХреНрд░рд┐рдп рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ):

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

рдЕрдм рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ config.yml - рдкреНрд░рдорд╛рдгрд╣рд░реВ рд░ рдХрд╣рд╛рдБ рдврдХрдврдХ рдЧрд░реНрдиред рддрдкрд╛рдИрдВ рддреБрд░реБрдиреНрддреИ рддреНрдпрд╣рд╛рдБ alphavantage рдХреЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЯрд╛ рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЦреИрд░, рдЕрдЧрд╛рдбрд┐ рдмрдвреМрдВ config.py - рд╣рд╛рдореНрд░реЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдмрд╛рдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЯрд╛ рдирд┐рдХрд╛рд▓реНрдиреБрд╣реЛрд╕реНред рд╣реЛ, рдо рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫреБ, рдореИрд▓реЗ рдореЗрд░реЛ рд▓рд┐рдм рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ рдЫреБ - sitri.

Mongo рдЬрдбрд╛рди рдЧрд░реНрджрд╛, рд╕рдмреИ рдХреБрд░рд╛ рдПрдХрджрдо рд╕рд░рд▓ рдЫред рдШреЛрд╖рдгрд╛ рдЧрд░реЗ рдЧреНрд░рд╛рд╣рдХ рд╡рд░реНрдЧ рдЬрдбрд╛рди рдЧрд░реНрди рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ cruds рдХреЛ рд▓рд╛рдЧрд┐, рд╕рдВрдЧреНрд░рд╣ рдорд╛ рдкреНрд░рд╢реНрдирд╣рд░реВ рдмрдирд╛рдЙрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдиред

рдЕрдм рдХреЗ рд╣реБрдиреЗ рд╣реЛ ?

рд▓реЗрдЦ рдзреЗрд░реИ рд▓рд╛рдореЛ рдЫреИрди, рдХрд┐рдирдХрд┐ рдпрд╣рд╛рдБ рдо рдХреЗрд╡рд▓ рдкреНрд░реЗрд░рдгрд╛ рд░ рддрдпрд╛рд░реАрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрджреИрдЫреБ, рддреНрдпрд╕реИрд▓реЗ рдорд▓рд╛рдИ рджреЛрд╖ рдирджрд┐рдиреБрд╣реЛрд╕реН - рдо рд╡рдЪрди рджрд┐рдиреНрдЫреБ рдХрд┐ рдЕрд░реНрдХреЛ рднрд╛рдЧрдорд╛ рдХрд╛рд░реНрдп рд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╣реБрдиреЗрдЫред

рддреНрдпрд╕реЛрднрдП, рдпреЛ рдЕрд░реНрдХреЛ рднрд╛рдЧрдорд╛ рд╣рд╛рдореА:

  1. рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд╕рд╛рде aiohttp рдорд╛ alphavantage рдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдЧреНрд░рд╛рд╣рдХ рд▓реЗрдЦреМрдВред
  2. рддрд┐рдиреАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдзрд┐рддреЛ рд░ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдореВрд▓реНрдпрд╣рд░реВрдорд╛ рдбреЗрдЯрд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗ рдПрдЬреЗрдиреНрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб

рдпрд╕ рднрд╛рдЧрдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб

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

DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рднрдПрдХрд╛ рд╕рд╛рдЗрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рднрд░рдкрд░реНрджреЛ рд╣реЛрд╕реНрдЯрд┐рдЩ рдЦрд░рд┐рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН ЁЯФе DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рднрд░рдкрд░реНрджреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдЩ рдХрд┐рдиреНрдиреБрд╣реЛрд╕реН | ProHoster