Bot télégramme évolutif prêt pour la production sur Django

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.





! , 300 000 . , , , . .





, "" , - stackoverflow. , *, , . , , . , !





GitHub , . , python-telegram-bot, Django, Celery, Postgres, Redis, Dokku, GitHub Actions . , .





Django?

: Django - ! ? :





  1. Django , . YCombinator , , - .





  2. - , . , : " ".





  3. Django . . .





, , hello-world, , , (, Telegram Bot API ). , - - , .





, background tasks. , . Django Celery. Redis, Django-celery-beat ( , ).





:

, . . "" ,





  1. ( , sqlite, in memory). , Postgres.





    1. , .





  2. - , .





    1. , , Sentry.





  3. CI, .





    1. GitHub Actions, Dokku git pull , - . .





  4. . - .





    1. polling , - ⬇️.





Telegram Bot API ( ): .





  1. Polling - , .





  2. 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 .






, - . , - , , . , .





? ? .








All Articles