เชซเซ‹เชธเซเชŸ เชชเชฐ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ เช•เชพเชฐเซเชฏเซ‹, เชญเชพเช— I: เชชเชฐเชฟเชšเชฏ

เชซเซ‹เชธเซเชŸ เชชเชฐ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ เช•เชพเชฐเซเชฏเซ‹, เชญเชพเช— I: เชชเชฐเชฟเชšเชฏ

เชนเซเช‚ เช†เชตเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเซ€เชตเชตเชพ เช†เชตเซเชฏเซ‹?

เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเชนเซ‡เชฒเชพ เชฎเชจเซ‡ เชเช• เช–เซ‚เชฌ เชœ เชฒเซ‹เชก เชฅเชฏเซ‡เชฒ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชฌเซ‡เช•เชเชจเซเชก เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชนเชคเซเช‚, เชœเซ‡เชฎเชพเช‚ เชœเชŸเชฟเชฒ เช—เชฃเชคเชฐเซ€เช“ เช…เชจเซ‡ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชธเซ‡เชตเชพเช“ เชฎเชพเชŸเซ‡เชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชธเชพเชฅเซ‡ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ เช•เชพเชฐเซเชฏเซ‹เชจเชพ เชจเชฟเชฏเชฎเชฟเชค เช…เชฎเชฒเชจเซ‡ เช—เซ‹เช เชตเชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เชนเชคเซเช‚. เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช…เชธเซเชฎเซ‡เชณ เช›เซ‡ เช…เชจเซ‡ เชนเซเช‚ เช†เชตเซเชฏเซ‹ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชคเซ‡เชฎเชพเช‚ เช•เซเชฐเซ‹เชจ-เชฒเซ‹เชจเซเชšเชฟเช‚เช— เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชเช• เชธเชฐเชณ เชชเชฆเซเชงเชคเชฟ เชนเชคเซ€: เชตเชฐเซเชคเชฎเชพเชจ เชธเชฎเชฏเชจเซ€ เชคเชชเชพเชธ เช•เชฐเชคเซ€ เชฒเซ‚เชช เช…เชจเซ‡ เช•เซ‹เชฐเซ‹เชŸเซ€เชจเซเชธเชจเชพ เชœเซ‚เชฅเซ‹เชจเซ‡ เชญเซ‡เช—เซ€ เช•เชฐเซ€เชจเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพ - เช† เช…เชญเชฟเช—เชฎ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เชฌเชจเซเชฏเซ‹ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชกเชเชจเซ‡เช• เช…เชจเซ‡ เชธเซ‡เช‚เช•เชกเซ‹ เช†เชตเชพ เช•เซ‹เชฐเซ‹เชŸเซ€เชจ เชจ เชนเชคเชพ. เชœเซ‹ เช•เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฌเซ‡ เชนเชœเชพเชฐเชจเซ‡ เชตเชŸเชพเชตเซ€ เช—เชˆ, เชคเซเชฏเชพเชฐเซ‡ เชฎเชพเชฐเซ‡ เชฌเซเชฐเซ‹เช•เชฐ, เช˜เชฃเชพ เช•เชพเชฎเชฆเชพเชฐเซ‹ เชตเช—เซ‡เชฐเซ‡ เชธเชพเชฅเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เช•เชพเชฐเซเชฏ เช•เชคเชพเชฐ เช—เซ‹เช เชตเชตเชพเชจเซเช‚ เชตเชฟเชšเชพเชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚.

เชชเชนเซ‡เชฒเชพ เชฎเซ‡เช‚ เชธเซ‡เชฒเซ‡เชฐเซ€ เช…เชœเชฎเชพเชตเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚, เชœเซ‡เชจเซ‹ เชฎเซ‡เช‚ เชชเชนเซ‡เชฒเชพ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เชนเชคเซ‹. เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ€ เช…เชธเซเชฎเซ‡เชณ เชชเซเชฐเช•เซƒเชคเชฟเชจเซ‡ เชฒเซ€เชงเซ‡, เชฎเซ‡เช‚ เชชเซเชฐเชถเซเชจเชฎเชพเช‚ เชกเซ‚เชฌเช•เซ€ เชฎเชพเชฐเซ€ เช…เชจเซ‡ เชœเซ‹เชฏเซเช‚ เชเช• เชฒเซ‡เช–, เช…เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ, เชฒเซ‡เช–เชจเชพ เชฒเซ‡เช–เช• เชฆเซเชตเชพเชฐเชพ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ.

เชนเซเช‚ เช† เช•เชนเซ€เชถ, เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช–เซ‚เชฌ เชœ เชฐเชธเชชเซเชฐเชฆ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเชพเชฐเซ€ เชŸเซ€เชฎเชจเซ€ เช…เชจเซเชฏ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชฎเชพเช‚ เช–เซ‚เชฌ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฒเซ‡เช–เช• เชชเซ‹เชคเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡ เช…เชธเซเชฎเซ‡เชณ เชชเซ‚เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‡ เช‰เชคเซเชชเชพเชฆเชจเชฎเชพเช‚ เชฐเซ‹เชฒ เช†เช‰เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเชคเซ‹. เชชเชฐเช‚เชคเซ, เช•เชฎเชจเชธเซ€เชฌเซ‡, เชคเซ‡ เช–เชฐเซ‡เช–เชฐ เชฎเชจเซ‡ เช…เชจเซเช•เซ‚เชณ เชจ เชนเชคเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เชธเชฎเชธเซเชฏเชพ เช•เชพเชฐเซเชฏเซ‹เชจเชพ เชœเซ‚เชฅ เชฒเซ‹เชจเซเชš เชธเชพเชฅเซ‡ (เชœเซเช“. เชœเซ‚เชฅ). เชฒเซ‡เช–เชจ เชธเชฎเชฏเซ‡ เชฎเซเชฆเซเชฆเซ‹ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชฌเช‚เชง เช›เซ‡, เชœเซ‹ เช•เซ‡ เชเช• เชฎเชนเชฟเชจเชพเชฅเซ€ เช•เชพเชฎ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เช•เซ‹เชˆ เชชเชฃ เชธเช‚เชœเซ‹เช—เซ‹เชฎเชพเช‚, เชฒเซ‡เช–เช•เชจเซ‡ เชถเซเชญเช•เชพเชฎเชจเชพเช“ เช…เชจเซ‡ เชธเชฐเซเชตเชถเซเชฐเซ‡เชทเซเช , เช•เชพเชฐเชฃ เช•เซ‡ เชฒเชฟเชฌ เชชเชฐ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชตเชธเซเชคเซเช“ เช›เซ‡... เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฎเซเชฆเซเชฆเซ‹ เชฎเชพเชฐเชพเชฎเชพเช‚ เช›เซ‡ เช…เชจเซ‡ เชธเชพเชงเชจ เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชญเซ€เชจเซเช‚ เชฌเชจเซเชฏเซเช‚. เชตเชงเซเชฎเชพเช‚, เช•เซ‡เชŸเชฒเชพเช• เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชธเซ‡เชตเชพเช“ เชฎเชพเชŸเซ‡ 2-3 HTTP เชตเชฟเชจเช‚เชคเซ€เช“ เชนเชคเซ€, เชคเซ‡เชฅเซ€ เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชชเชฃ, เช…เชฎเซ‡ 4 เชนเชœเชพเชฐ TCP เช•เชจเซ‡เช•เซเชถเชจ เชฌเชจเชพเชตเซ€เช เช›เซ€เช, เชฒเช—เชญเช— เชฆเชฐ 2 เช•เชฒเชพเช•เซ‡ - เชฌเชนเซ เชธเชพเชฐเซเช‚ เชจเชฅเซ€... เชนเซเช‚ เชเช• เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เชธเชคเซเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช•เชพเชฎเชฆเชพเชฐเซ‹ เชถเชฐเซ‚ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เชพเชฐเซเชฏ. aiohttp เชฆเซเชตเชพเชฐเชพ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชตเชฟเชจเช‚เชคเซ€เช“ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเซเช‚ เชตเชงเซ เช…เชนเซ€เช‚.

เช† เชธเช‚เชฆเชฐเซเชญเซ‡, เชฎเซ‡เช‚ เชœเซ‹เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ เชตเชฟเช•เชฒเซเชชเซ‹ เช…เชจเซ‡ เชคเซ‡ เชฎเชณเซเชฏเซเช‚! เชธเซ‡เชฒเชฐเชฟเชจเชพ เชจเชฟเชฐเซเชฎเชพเชคเชพเช“, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เชนเซเช‚ เชคเซ‡เชจเซ‡ เชธเชฎเชœเซเช‚ เช›เซเช‚ เชธเซ‹เชฒเซ‡เชฎเชจเซ‡ เชชเซ‚เช›เซ‹, เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ Faust, เชฎเซ‚เชณ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฎเชพเชŸเซ‡ เชฐเซ‹เชฌเชฟเชจ เชนเซ‚เชก. เชซเซ‹เชธเซเชŸ เช•เชพเชซเช•เชพ เชธเซเชŸเซเชฐเซ€เชฎเซเชธเชฅเซ€ เชชเซเชฐเซ‡เชฐเชฟเชค เช›เซ‡ เช…เชจเซ‡ เช•เชพเชซเช•เชพ เชธเชพเชฅเซ‡ เชฌเซเชฐเซ‹เช•เชฐ เชคเชฐเซ€เช•เซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, 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 - เช…เชฎเชพเชฐเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเชฎเชพเช‚เชฅเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เช•เชพเชขเซ‹. เชนเชพ, เชนเซเช‚ เช•เชฌเซ‚เชฒ เช•เชฐเซเช‚ เช›เซเช‚, เชฎเซ‡เช‚ เชฎเชพเชฐเชพ เชฒเชฟเชฌเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ - เชธเชฟเชคเซเชฐเชฟ.

เชฎเซ‹เช‚เช—เซ‹ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชฌเชงเซเช‚ เชเช•เชฆเชฎ เชธเชฐเชณ เช›เซ‡. เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเซ€ เช—เซเชฐเชพเชนเช• เชตเชฐเซเช— เชœเซ‹เชกเชตเชพ เชฎเชพเชŸเซ‡ เช…เชจเซ‡ เช†เชงเชพเชฐ เชตเชฐเซเช— เช•เซเชฐเซเชกเซเชธ เชฎเชพเชŸเซ‡, เชธเช‚เช—เซเชฐเชนเซ‹ เชชเชฐ เชชเซเชฐเชถเซเชจเซ‹ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡.

เช†เช—เชณ เชถเซเช‚ เชฅเชถเซ‡?

เชฒเซ‡เช– เชฌเชนเซ เชฒเชพเช‚เชฌเซ‹ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชนเซ€เช‚ เชนเซเช‚ เชซเช•เซเชค เชชเซเชฐเซ‡เชฐเชฃเชพ เช…เชจเซ‡ เชคเซˆเชฏเชพเชฐเซ€ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚, เชคเซ‡เชฅเซ€ เชฎเชจเซ‡ เชฆเซ‹เชท เชจ เช†เชชเซ‹ - เชนเซเช‚ เชตเชšเชจ เช†เชชเซเช‚ เช›เซเช‚ เช•เซ‡ เช†เช—เชณเชจเชพ เชญเชพเช—เชฎเชพเช‚ เช•เซเชฐเชฟเชฏเชพ เช…เชจเซ‡ เช—เซเชฐเชพเชซเชฟเช•เซเชธ เชนเชถเซ‡.

เชคเซ‡เชฅเซ€, เช† เชœ เช†เช—เชณเชจเชพ เชญเชพเช—เชฎเชพเช‚ เช†เชชเชฃเซ‡:

  1. เชšเชพเชฒเซ‹ aiohttp เชชเชฐ เช†เชฒเซเชซเชพเชตเซ‡เชจเซเชŸเซ‡เชœ เชฎเชพเชŸเซ‡ เชเช• เชจเชพเชจเซ‹ เช•เซเชฒเชพเชฏเช‚เชŸ เชฒเช–เซ€เช เช…เชจเซ‡ เช†เชชเชฃเชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชเชจเซเชกเชชเซ‹เชˆเชจเซเชŸเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชธเชพเชฅเซ‡.
  2. เชšเชพเชฒเซ‹ เชเช• เชเชœเชจเซเชŸ เชฌเชจเชพเชตเซ€เช เชœเซ‡ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชธเชฟเช•เซเชฏเซ‹เชฐเชฟเชŸเซ€เช เช…เชจเซ‡ เชเชคเชฟเชนเชพเชธเชฟเช• เช•เชฟเช‚เชฎเชคเซ‹เชจเซ‹ เชกเซ‡เชŸเชพ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชถเซ‡.

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซ‹เชก

เช† เชญเชพเช— เชฎเชพเชŸเซ‡ เช•เซ‹เชก

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹