如何更改由Azure机器学习服务构建的Docker映像上的gunicorn参数

我正在使用Azure ML服务来部署docker映像,然后将该映像重定向到azure上的服务APP。为了增加超时时间和工人的gunicorn数量,我通常使用此CMD(作为文件启动文件我的APP服务):

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

自9月以来,此命令不再起作用,因为图像的结构已更改。我有此错误:

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",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",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",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",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",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",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",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",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",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",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",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",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",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",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",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",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",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",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",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",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",in import_app
2019-11-07T15:28:45.052219969Z     __import__(module)
2019-11-07T15:28:45.052224169Z   File "/var/azureml-server/wsgi.py",in <module>
2019-11-07T15:28:45.052228569Z     import create_app
2019-11-07T15:28:45.052232769Z   File "/var/azureml-server/create_app.py",in <module>
2019-11-07T15:28:45.052237269Z     from app import main
2019-11-07T15:28:45.052241369Z   File "/var/azureml-server/app.py",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",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",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中。 有人可以帮助我找到解决此问题的方法吗?

lilaccathy 回答:如何更改由Azure机器学习服务构建的Docker映像上的gunicorn参数

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3143503.html

大家都在问