Как я могу изменить параметры gunicorn на образе Docker, созданного службой машинного обучения Azure - PullRequest
0 голосов
/ 07 ноября 2019

Я использую службу Azure ML для развертывания образа докера, а затем этот образ перенаправляю в приложение службы на Azure. Чтобы увеличить время ожидания и число рабочих, я обычно использовал эту CMD (в качестве файла запуска файла длямоя служба APP):

gunicorn --timeout 3600 --workers 2 --chdir /var/azureml-app wsgi:app. 

с сентября месяца эта команда больше не работает, так как структура изображения была изменена. у меня есть эта ошибка:

2019-11-07T15:24:12.770732783Z [2019-11-07 15:24:12 +0000] [1] [INFO] Starting gunicorn 19.6.0
2019-11-07T15:24:12.771521687Z [2019-11-07 15:24:12 +0000] [1] [INFO] Listening at: http://0.0.0.0:5001 (1)
2019-11-07T15:24:12.771569087Z [2019-11-07 15:24:12 +0000] [1] [INFO] Using worker: sync
2019-11-07T15:24:12.780266129Z [2019-11-07 15:24:12 +0000] [8] [INFO] Booting worker with pid: 8
2019-11-07T15:24:12.795566102Z [2019-11-07 15:24:12 +0000] [8] [ERROR] Exception in worker process
2019-11-07T15:24:12.795587102Z Traceback (most recent call last):
2019-11-07T15:24:12.795592702Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
2019-11-07T15:24:12.795597303Z     worker.init_process()
2019-11-07T15:24:12.795601603Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
2019-11-07T15:24:12.795606103Z     self.load_wsgi()
2019-11-07T15:24:12.795610303Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
2019-11-07T15:24:12.795614703Z     self.wsgi = self.app.wsgi()
2019-11-07T15:24:12.795618703Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-11-07T15:24:12.795622903Z     self.callable = self.load()
2019-11-07T15:24:12.795627003Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2019-11-07T15:24:12.795631303Z     return self.load_wsgiapp()
2019-11-07T15:24:12.795635403Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2019-11-07T15:24:12.795639703Z     return util.import_app(self.app_uri)
2019-11-07T15:24:12.795644003Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/util.py", line 357, in import_app
2019-11-07T15:24:12.795648203Z     __import__(module)
2019-11-07T15:24:12.795652403Z ModuleNotFoundError: No module named 'wsgi'
2019-11-07T15:24:12.795656903Z [2019-11-07 15:24:12 +0000] [8] [INFO] Worker exiting (pid: 8)
2019-11-07T15:24:12.834309988Z [2019-11-07 15:24:12 +0000] [9] [INFO] Booting worker with pid: 9
2019-11-07T15:24:12.839328212Z [2019-11-07 15:24:12 +0000] [9] [ERROR] Exception in worker process
2019-11-07T15:24:12.839355713Z Traceback (most recent call last):
2019-11-07T15:24:12.839361813Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
2019-11-07T15:24:12.839366613Z     worker.init_process()
2019-11-07T15:24:12.839370613Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
2019-11-07T15:24:12.839375113Z     self.load_wsgi()
2019-11-07T15:24:12.839379813Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
2019-11-07T15:24:12.839384413Z     self.wsgi = self.app.wsgi()
2019-11-07T15:24:12.839398413Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-11-07T15:24:12.839403513Z     self.callable = self.load()
2019-11-07T15:24:12.839407513Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2019-11-07T15:24:12.839411813Z     return self.load_wsgiapp()
2019-11-07T15:24:12.839416213Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2019-11-07T15:24:12.839420413Z     return util.import_app(self.app_uri)
2019-11-07T15:24:12.839424613Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/util.py", line 357, in import_app
2019-11-07T15:24:12.839428813Z     __import__(module)
2019-11-07T15:24:12.839432713Z ModuleNotFoundError: No module named 'wsgi'
2019-11-07T15:24:12.839483913Z [2019-11-07 15:24:12 +0000] [9] [INFO] Worker exiting (pid: 9)
2019-11-07T15:24:12.966689624Z [2019-11-07 15:24:12 +0000] [1] [INFO] Shutting down: Master
2019-11-07T15:24:12.966728024Z [2019-11-07 15:24:12 +0000] [1] [INFO] Reason: Worker failed to boot.
2019-11-07 15:24:09.330 INFO  - Pulling image: conquistadorml2032667953.azurecr.io/conquistadorml-charge-int:153
2019-11-07 15:24:10.762 INFO  - 153 Pulling from conquistadorml-charge-int
2019-11-07 15:24:10.763 INFO  -  Digest: sha256:4eb92ae8688a5ca97db150b481b53b684b5272c39c6a0de0e2f7bd6f7b731050
2019-11-07 15:24:10.763 INFO  -  Status: Image is up to date for conquistadorml2032667953.azurecr.io/conquistadorml-charge-int:153
2019-11-07 15:24:10.767 INFO  - Pull Image successful, Time taken: 0 Minutes and 1 Seconds
2019-11-07 15:24:10.782 INFO  - Starting container for site
2019-11-07 15:24:10.783 INFO  - docker run -d -p 23941:5001 --name conquistador-mlcharges-int_0_0d58b7a6 -e WEBSITE_SITE_NAME=Conquistador-MLCharges-INT -e WEBSITE_AUTH_ENABLED=False -e PORT=5001 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=conquistador-mlcharges-int.azurewebsites.net -e WEBSITE_INSTANCE_ID=94250d098a45083ed2d96ac28597d51955c31a0ad2ab0543877f4d59fcee5e1c -e HTTP_LOGGING_ENABLED=1 conquistadorml2032667953.azurecr.io/conquistadorml-charge-int:153 gunicorn --timeout 3600 --workers 2 --chdir /var/azureml-app wsgi:app 
2019-11-07 15:24:11.876 INFO  - Initiating warmup request to container conquistador-mlcharges-int_0_0d58b7a6 for site conquistador-mlcharges-int
2019-11-07 15:24:13.913 ERROR - Container conquistador-mlcharges-int_0_0d58b7a6 for site conquistador-mlcharges-int has exited, failing site start
2019-11-07 15:24:13.915 ERROR - Container conquistador-mlcharges-int_0_0d58b7a6 didn't respond to HTTP pings on port: 5001, failing site start. See container logs for debugging.

Затем я исследовал этот момент и обнаружил, что Azure изменил дерево этих папок и что все файлы, связанные с сервером gunicorn, находятся в другой папке (/ var / azureml-server)

после этого я попробовал следующую команду

gunicorn --timeout 3600 --workers 2 --chdir /var/azureml-app wsgi:app 

и у меня возникла эта ошибка:

2019-11-07T15:28:43.091478776Z [2019-11-07 15:28:43 +0000] [1] [INFO] Starting gunicorn 19.6.0
2019-11-07T15:28:43.091903578Z [2019-11-07 15:28:43 +0000] [1] [INFO] Listening at: http://0.0.0.0:5001 (1)
2019-11-07T15:28:43.091919878Z [2019-11-07 15:28:43 +0000] [1] [INFO] Using worker: sync
2019-11-07T15:28:43.100795820Z [2019-11-07 15:28:43 +0000] [8] [INFO] Booting worker with pid: 8
2019-11-07T15:28:43.139050304Z [2019-11-07 15:28:43 +0000] [9] [INFO] Booting worker with pid: 9
2019-11-07T15:28:45.052015868Z [2019-11-07 15:28:45 +0000] [8] [ERROR] Exception in worker process
2019-11-07T15:28:45.052045668Z Traceback (most recent call last):
2019-11-07T15:28:45.052051468Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
2019-11-07T15:28:45.052056368Z     worker.init_process()
2019-11-07T15:28:45.052060668Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
2019-11-07T15:28:45.052065468Z     self.load_wsgi()
2019-11-07T15:28:45.052069968Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
2019-11-07T15:28:45.052074568Z     self.wsgi = self.app.wsgi()
2019-11-07T15:28:45.052078868Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-11-07T15:28:45.052083268Z     self.callable = self.load()
2019-11-07T15:28:45.052087468Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2019-11-07T15:28:45.052091868Z     return self.load_wsgiapp()
2019-11-07T15:28:45.052096068Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2019-11-07T15:28:45.052100468Z     return util.import_app(self.app_uri)
2019-11-07T15:28:45.052104868Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/util.py", line 357, in import_app
2019-11-07T15:28:45.052109268Z     __import__(module)
2019-11-07T15:28:45.052113468Z   File "/var/azureml-server/wsgi.py", line 1, in <module>
2019-11-07T15:28:45.052118269Z     import create_app
2019-11-07T15:28:45.052122569Z   File "/var/azureml-server/create_app.py", line 3, in <module>
2019-11-07T15:28:45.052126969Z     from app import main
2019-11-07T15:28:45.052131169Z   File "/var/azureml-server/app.py", line 27, in <module>
2019-11-07T15:28:45.052135569Z     import main as user_main
2019-11-07T15:28:45.052139769Z ModuleNotFoundError: No module named 'main'
2019-11-07T15:28:45.052144069Z [2019-11-07 15:28:45 +0000] [9] [ERROR] Exception in worker process
2019-11-07T15:28:45.052148369Z Traceback (most recent call last):
2019-11-07T15:28:45.052152669Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
2019-11-07T15:28:45.052157069Z     worker.init_process()
2019-11-07T15:28:45.052170669Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
2019-11-07T15:28:45.052175669Z     self.load_wsgi()
2019-11-07T15:28:45.052179969Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
2019-11-07T15:28:45.052184469Z     self.wsgi = self.app.wsgi()
2019-11-07T15:28:45.052188569Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-11-07T15:28:45.052192969Z     self.callable = self.load()
2019-11-07T15:28:45.052197169Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2019-11-07T15:28:45.052201569Z     return self.load_wsgiapp()
2019-11-07T15:28:45.052206769Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2019-11-07T15:28:45.052211269Z     return util.import_app(self.app_uri)
2019-11-07T15:28:45.052215569Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/util.py", line 357, in import_app
2019-11-07T15:28:45.052219969Z     __import__(module)
2019-11-07T15:28:45.052224169Z   File "/var/azureml-server/wsgi.py", line 1, in <module>
2019-11-07T15:28:45.052228569Z     import create_app
2019-11-07T15:28:45.052232769Z   File "/var/azureml-server/create_app.py", line 3, in <module>
2019-11-07T15:28:45.052237269Z     from app import main
2019-11-07T15:28:45.052241369Z   File "/var/azureml-server/app.py", line 27, in <module>
2019-11-07T15:28:45.052245769Z     import main as user_main
2019-11-07T15:28:45.052249969Z ModuleNotFoundError: No module named 'main'
2019-11-07T15:28:45.052376670Z [2019-11-07 15:28:45 +0000] [8] [INFO] Worker exiting (pid: 8)
2019-11-07T15:28:45.052396270Z [2019-11-07 15:28:45 +0000] [9] [INFO] Worker exiting (pid: 9)
2019-11-07T15:28:45.225237198Z Traceback (most recent call last):
2019-11-07T15:28:45.225280098Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 196, in run
2019-11-07T15:28:45.225287498Z     self.sleep()
2019-11-07T15:28:45.225291798Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 346, in sleep
2019-11-07T15:28:45.225296798Z     ready = select.select([self.PIPE[0]], [], [], 1.0)
2019-11-07T15:28:45.225301298Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 231, in handle_chld
2019-11-07T15:28:45.225305798Z     self.reap_workers()
2019-11-07T15:28:45.225309998Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 506, in reap_workers
2019-11-07T15:28:45.225314498Z     raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2019-11-07T15:28:45.225318698Z gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2019-11-07T15:28:45.225333798Z 
2019-11-07T15:28:45.225338598Z During handling of the above exception, another exception occurred:
2019-11-07T15:28:45.225342998Z 
2019-11-07T15:28:45.225347098Z Traceback (most recent call last):
2019-11-07T15:28:45.225351298Z   File "/opt/miniconda/bin/gunicorn", line 10, in <module>
2019-11-07T15:28:45.225356298Z     sys.exit(run())
2019-11-07T15:28:45.225360398Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 74, in run
2019-11-07T15:28:45.225364798Z     WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
2019-11-07T15:28:45.225369898Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/base.py", line 192, in run
2019-11-07T15:28:45.225374599Z     super(Application, self).run()
2019-11-07T15:28:45.225378699Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/app/base.py", line 72, in run
2019-11-07T15:28:45.225383099Z     Arbiter(self).run()
2019-11-07T15:28:45.225387099Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 218, in run
2019-11-07T15:28:45.225391599Z     self.halt(reason=inst.reason, exit_status=inst.exit_status)
2019-11-07T15:28:45.225395699Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 331, in halt
2019-11-07T15:28:45.225400099Z     self.stop()
2019-11-07T15:28:45.225404199Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 381, in stop
2019-11-07T15:28:45.225408599Z     time.sleep(0.1)
2019-11-07T15:28:45.225412799Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 231, in handle_chld
2019-11-07T15:28:45.225417099Z     self.reap_workers()
2019-11-07T15:28:45.225421199Z   File "/opt/miniconda/lib/python3.6/site-packages/gunicorn/arbiter.py", line 506, in reap_workers
2019-11-07T15:28:45.225425699Z     raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2019-11-07T15:28:45.225429899Z gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

2019-11-07 15:28:39.434 INFO  - Pulling image: conquistadorml2032667953.azurecr.io/conquistadorml-charge-int:153
2019-11-07 15:28:41.095 INFO  - 153 Pulling from conquistadorml-charge-int
2019-11-07 15:28:41.101 INFO  -  Digest: sha256:4eb92ae8688a5ca97db150b481b53b684b5272c39c6a0de0e2f7bd6f7b731050
2019-11-07 15:28:41.103 INFO  -  Status: Image is up to date for conquistadorml2032667953.azurecr.io/conquistadorml-charge-int:153
2019-11-07 15:28:41.121 INFO  - Pull Image successful, Time taken: 0 Minutes and 1 Seconds
2019-11-07 15:28:41.134 INFO  - Starting container for site
2019-11-07 15:28:41.134 INFO  - docker run -d -p 57858:5001 --name conquistador-mlcharges-int_0_70b1e3fb -e WEBSITE_SITE_NAME=Conquistador-MLCharges-INT -e WEBSITE_AUTH_ENABLED=False -e PORT=5001 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=conquistador-mlcharges-int.azurewebsites.net -e WEBSITE_INSTANCE_ID=94250d098a45083ed2d96ac28597d51955c31a0ad2ab0543877f4d59fcee5e1c -e HTTP_LOGGING_ENABLED=1 conquistadorml2032667953.azurecr.io/conquistadorml-charge-int:153 gunicorn --timeout 3600 --workers 2 --chdir /var/azureml-server wsgi:app 

2019-11-07 15:28:42.177 INFO  - Initiating warmup request to container conquistador-mlcharges-int_0_70b1e3fb for site conquistador-mlcharges-int
2019-11-07 15:28:46.239 ERROR - Container conquistador-mlcharges-int_0_70b1e3fb for site conquistador-mlcharges-int has exited, failing site start
2019-11-07 15:28:46.249 ERROR - Container conquistador-mlcharges-int_0_70b1e3fb didn't respond to HTTP pings on port: 5001, failing site start. See container logs for debugging. 

Я думаю, что проблема в том, что некоторые сценарии находятся в/ var / azureml-app и другой в / var / azureml-server. Может кто-нибудь помочь мне найти решение этой проблемы?

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