Il y a beaucoup d'articles sur Habré sur la façon de créer le robot Telegram le plus simple avec des boutons de menu et de la logique, il y a des instructions sur la façon de tout déployer. Dans cet article, je vais vous montrer comment créer des bots de production que des centaines de milliers d'utilisateurs peuvent utiliser.
, "" , - stackoverflow. , *, , . , , . , !
GitHub , . , python-telegram-bot, Django, Celery, Postgres, Redis, Dokku, GitHub Actions . , .
Django?
: Django - ! ? :
Django , . YCombinator , , - .
- , . , : " ".
Django . . .
, , hello-world, , , (, Telegram Bot API ). , - - , .
, background tasks. , . Django Celery. Redis, Django-celery-beat ( , ).
:
, . . "" ,
( , sqlite, in memory). , Postgres.
, .
- , .
, , Sentry.
CI, .
GitHub Actions, Dokku git pull , - . .
. - .
polling , - ⬇️.
Telegram Bot API ( ): .
Polling - , .
Webhook - : URL .
, -, handlers, . , HTTPS , , , IP DNS . ngrok , , , .
polling - , Webhook : , , load balancer ( docker-compose, PaaS, Heroku, Google App Engine Digital Ocean App Platform).
Django Telegram bot
Django? view ( ), ( handlers - ) ( ).
Django Model . , - /start. , , . @classmethod
, User -.
, . Redis load balancers .... .
, , - . , , , . , - , ? .
Postgres Redis. HTTPs. load balancer . , , zero-downtime ?
. , (Google App Engine, Digital Ocean App Platform, Heroku). self-hosted (Dokku, CapRover). Self-hosted , - (, Digital Ocean), apt-get install
.
Dokku?
Heroku . GitHub , . , , . , , , , , . .
, stackoverflow " ", " ", " https" . , .
.
: . , , . ! .
Heroku , , : , . ?
, Open Source self-hosted . Dokku. , UI one-click github integration, .
Heroku, Dokku , open-source Buildpacks, 2 HTTPS .
Dokku + Django
buildpacks , , ) ) . requirements.txt Procfile.
Dokku DOKKU_SCALE, . , worker=4, : Procfile worker ( , Celery worker), 4 , load balancer. ? .
Dokku , "" Postgres Redis, , DATABASE_URL
REDIS_URL
, settings.py, .
. CI , Main ssh git pull ( Dokku). GitHub Actions, .
, Dokku , , HTTPs, GitHub Actions , Wiki .
? ? .