Как развернуть WS из разных проектов на производственном сервере с использованием Python? - PullRequest
0 голосов
/ 26 апреля 2019

Я новичок в Python, и мне нужно работать над созданием некоторых веб-сервисов.Я знаком с WS в Java, где я использую Tomcat для развертывания нескольких WS, и моя идея заключалась в том, чтобы применить аналогичные решения к Python.По сути, у меня есть разные проекты, представляющие разные сервисы, и я попытался развернуть их на сервере Waitress.Чтобы проверить это, я создал следующие структуры папок:

ws1 /

| ---- service1 /

| ------ | ------file1.py

ws2 /

| ---- service2 /

| ------ | ------ file2.py

server /

| ---- main.py

file1.py и file2.py содержат аналогичный код.Например, содержимое file1.py равно:

from flask import Flask, make_response

app = Flask(__name__)

@app.route("/ws1")  # /ws2 in file2.py
def hello():
    headers = {'Content-Type': 'text/plain'}
    return make_response('Started WS1!', 200, headers)

@app.route("/ws1/bye")   # /ws2/ in file2.py
def bye():
    return "Bye World from WS1!"

, а содержимое main.py равно:

from waitress import serve
from .. ws1.service1 import file1  # I started trying only with ws1

serve(file1.app, host='127.0.0.1', port=5000)

Если я пытаюсь запустить main.py , я получаю сообщение:

из .. ws1.service1 import file1

ValueError: попытка относительного импорта за пределы top-пакет уровней

Что я делаю не так?

В любом случае, я заметил, что если я хочу запустить более одной WS, мне, вероятно, нужно продублировать строку:

serve(file1.app, host='127.0.0.1', port=5000)

Кажется, таким образом я запускаю несколько экземпляров сервера, используя разные порты, я полагаю.Итак, вопрос в том, нужно ли в Python использовать экземпляр сервера для каждой WS?Должны ли они использовать разные порты?Или, может быть, есть более эффективный вариант?

Как я уже говорил, я обычно развертываю разные WS в Tomcat, используя один и тот же сервер + порт.Вот почему я попытался сделать это таким образом.

Заранее спасибо за вашу помощь / идеи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...