ПОСТИНГ В INSTAGRAM ИЗ 1С. МИКРОСЕРВИС НА PYTHON – ЧАСТЬ 1
- Опубликовано Илья Низамов
- Разделы Blog
- Дата 24.10.2020
- Комментарии 1 комментарий
Всем привет. Небольшая акция для новичков, старички могут пропустить)
К сожалению, текущий функционал портала школы не позволяет делать бандлы. В связи с этим решил попробовать собрать все курсы в один бандл по интересной цене. Кто заинтересовался, пишите в личку @IlyaNizamov
В данном уроке мы создадим http сервис на python. Готовый скрипт упакуем в виде exe файла, и рассмотрим вариант деплоя с помощью Docker.
В следующих уроках мы уже разработаем процедуру постинга и доработаем наш http сервис.
Импорт модулей
Для работы нам понадобятся функции логирования, класс для создания HTTP сервиса, и функции преобразования json.
import logging
from http.server import BaseHTTPRequestHandler, HTTPServer
import json
Класс обработчик
Создадим класс на основании 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"]
1 Комментарий
А исходники к ПОСТИНГ В INSTAGRAM ИЗ 1С где то выложены ? или мне послышалось в видео что они будут выложены ?)