Python код, который работает локально, не работает на кластерах Kubernetes - PullRequest
0 голосов
/ 10 января 2020

Я работаю на веб-сервере с Python flask и передаю данные методу post.

Допустим, ваш Python flask веб-сервер - это A, а B - это python файл, который отправляет данные на сервер A в виде сообщения.

Я планировал создать модуль путем развертывания A и модуля в качестве задания.

При тестировании на локальном компьютере он запустился без проблем и заменил только ip-адрес именем службы Kubernetes (для использования службы dns).

Но проблема в ошибке 500.

Я не знаю, что не так. .. Пожалуйста, помогите мне.

class Influx_Request3(Resource):
    def post(self):
        try:
            parser = reqparse.RequestParser()
            parser.add_argument('carlist', type=str)
            parser.add_argument('cardataframe', type=str)
            parser.add_argument('cardict', type=str)
            args = parser.parse_args()

            print(args.carlist)
            print("args")

            _carlist = args['carlist']
            _cardataframe = args['cardataframe']
            _cardict = args['cardict']

            print(_carlist)
            print("_carlist")

            Analysis_Extraction_post(2019, 10, 14, 1, _carlist, _cardataframe, _cardict)
        except Exception as e:
            return {'error':str(e)}

Это часть, которая получает данные с веб-сервера.

Попробуйте напечатать _carlist ', а args' print не распечатается.

Если вы попробуете kubectl logs pod (A)

10.244.1.46--[10 / Jan / 2020 08:17:50]" POST / extraction3 HTTP / 1.1 "500-

Выводите только так

NAME                                        READY   STATUS      RESTARTS   AGE
pod/analysis-extraction-6477dcc645-vcfdw    1/1     Running     0          10m
pod/analysis-influxinput-588d458f87-j48ls   1/1     Running     0          3h2m
pod/analysis-mongo-7p6sd                    0/1     Completed   0          10m
pod/busybox                                 1/1     Running     27         27h
pod/influx-695b89d797-h2fck                 1/1     Running     0          3h
pod/webserver-589dd46884-mzq5d              1/1     Running     0          3h

NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/extraction-svc     ClusterIP   10.96.40.221    <none>        3000/TCP   3h1m
service/influxinput-svc    ClusterIP   10.96.153.210   <none>        5000/TCP   3h2m
service/influxservice      ClusterIP   10.96.212.119   <none>        8086/TCP   3h
service/kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP    3h3m
service/webserverservice   ClusterIP   10.96.33.170    <none>        3000/TCP   3h

NAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/analysis-extraction    1/1     1            1           10m
deployment.apps/analysis-influxinput   1/1     1            1           3h2m
deployment.apps/influx                 1/1     1            1           3h
deployment.apps/webserver              1/1     1            1           3h

NAME                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/analysis-extraction-6477dcc645    1         1         1       10m
replicaset.apps/analysis-influxinput-588d458f87   1         1         1       3h2m
replicaset.apps/influx-695b89d797                 1         1         1       3h
replicaset.apps/webserver-589dd46884              1         1         1       3h

NAME                       COMPLETIONS   DURATION   AGE
job.batch/analysis-mongo   1/1           2m24s      10m



Код, который вы запрашиваете.

    carlist = json.dumps(carList, cls=NumpyEncoder)
    cardataframe = df_service.to_json()
    cardict = json.dumps(col_dict)

    data = {'carlist':carlist, 'cardataframe':cardataframe, 'cardict':cardict}
    res = requests.post('http://extraction-svc:3000/extraction3', data=data)
    print("request success")

https://www.programcreek.com/python/example/104294/flask_restful.reqparse.RequestParser

Это сайт, на который я ссылался.

См. Третий пример.

Попробуйте еще раз и г Повторите код ответа 200. Но по-прежнему не выводится.

10.244.1.53 - - [13/Jan/2020 02:31:46] "POST /extraction3 HTTP/1.1" 200 -


kubectl Описание службы extract-sv c

Name:              extraction-svc
Namespace:         default
Labels:            <none>
Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                     {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"extraction-svc","namespace":"default"},"spec":{"ports":[{"port":3...
Selector:          app=analysis-extraction
Type:              ClusterIP
IP:                10.96.8.131
Port:              <unset>  3000/TCP
TargetPort:        3000/TCP
Endpoints:         10.244.1.63:3000
Session Affinity:  None
Events:            <none>


1 Ответ

0 голосов
/ 14 января 2020

Помещение гриппа sh в вывод для печати в коде python сработало на удивление. Я не знаю, каков принцип.

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