ПОСТИНГ В INSTAGRAM ИЗ 1С. МИКРОСЕРВИС НА PYTHON - ЧАСТЬ 1

ПОСТИНГ В INSTAGRAM ИЗ 1С. МИКРОСЕРВИС НА PYTHON – ЧАСТЬ 1

В данном уроке мы создадим http сервис на python. Готовый скрипт упакуем в виде exe файла, и рассмотрим вариант деплоя с помощью Docker.

В следующих уроках мы уже разработаем процедуру постинга и доработаем наш http сервис.

Импорт модулей

Для работы нам понадобятся функции логирования, класс для создания HTTP сервиса, и функции преобразования json.

import logging 
from http.server import BaseHTTPRequestHandler, HTTPServer 
import json

Запишись на тренинг

НАУЧИСЬ РАЗРАБАТЫВАТЬ МИКРОСЕРВИСЫ НА PYTHON ДЛЯ 1С ЗА 5 ЧАСОВ ПОДРОБНЕЕ

Класс обработчик

Создадим класс на основании BaseHTTPRequestHandler, в котором опишем функции для обработки входящих запросов.

В ответ на GET запросы мы будем отдавать JSON

class MyBaseHTTPRequestHandler(BaseHTTPRequestHandler): 
def set_headers(self, code=200): 
self.send_response(code) 
self.send_header('Content-type', 'application/json') 
self.end_headers() 

def do_GET(self): 
hello = {'hello': 'world'} 
self.set_headers() 
self.wfile.write(json.dumps(hello).encode('utf-8'))

Запуск сервера

Разработаем функцию запуска нашего HTTP сервиса. И будем вызывать ее при запуске скрипта.

def run(server_class=HTTPServer, handler_class=MyBaseHTTPRequestHandler): 
logging.basicConfig(level=logging.INFO) 
server_address = ('', 9000) 
httpd = server_class(server_address, handler_class) 
logging.info('Start ...') 
try: 
httpd.serve_forever() 
except KeyboardInterrupt: 
pass 
httpd.server_close() 
logging.info('Stop ...') 


if __name__ == '__main__': 
run()

Подробное видео вы можете посмотреть на канале.

Полный код скрипта.

import logging 
from http.server import BaseHTTPRequestHandler, HTTPServer 
import json 


class MyBaseHTTPRequestHandler(BaseHTTPRequestHandler): 
def set_headers(self, code=200): 
self.send_response(code) 
self.send_header('Content-type', 'application/json') 
self.end_headers() 

def do_GET(self): 
hello = {'hello': 'world'} 
self.set_headers() 
self.wfile.write(json.dumps(hello).encode('utf-8')) 


def run(server_class=HTTPServer, handler_class=MyBaseHTTPRequestHandler): 
logging.basicConfig(level=logging.INFO) 
server_address = ('', 9000) 
httpd = server_class(server_address, handler_class) 
logging.info('Start ...') 
try: 
httpd.serve_forever() 
except KeyboardInterrupt: 
pass 
httpd.server_close() 
logging.info('Stop ...') 


if __name__ == '__main__': 
run()

Текст Dockerfile из видео

FROM python 

COPY . /home/myhttp 

EXPOSE 9000 

ENTRYPOINT ["python", "./home/myhttp/myhttp.py"]