简体   繁体   English

没有在哪里部署 Python Flask API 项目

[英]No where to deploy Python Flask API project

I thought it's easy to deploy a python api project to somewhere.我认为将 python api 项目部署到某个地方很容易。 BUT I was wrong, I cannot deploy to any platforms.但我错了,我无法部署到任何平台。

So far I have tried:到目前为止,我已经尝试过:

  1. Azure, Webapp and Function App Azure、Webapp 和 Function 应用程序
  2. PythonAnywhere PythonAnywhere
  3. Heroku Heroku

They all have issues when I'm trying to install dependency packages for this one: scikit-fmm当我尝试为此安装依赖包时,它们都有问题: scikit-fmm

here is the error message:这是错误消息:

Python Version is 3.7.10 Linux Python 版本为 3.7.10 Linux

pip install scikit-fmm

Collecting scikit-fmm
  Using cached scikit-fmm-2021.2.2.tar.gz (419 kB)
Requirement already satisfied: numpy>=1.0.2 in /usr/local/lib/python3.7/site-packages (from scikit-fmm) (1.18.1)
Building wheels for collected packages: scikit-fmm
  Building wheel for scikit-fmm (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9
d5f6e54/setup.py'"'"'; __file__='"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"',
 open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-
5ebu19pu
       cwd: /tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/
  Complete output (32 lines):
  running bdist_wheel
  running build
  running config_cc
  unifing config_cc, config, build_clib, build_ext, build commands --compiler options
  running config_fc
  unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
  running build_src
  build_src
  building extension "skfmm.cfmm" sources
  building extension "skfmm.pheap" sources
  build_src: building npy-pkg config files
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.7
  creating build/lib.linux-x86_64-3.7/skfmm
  copying skfmm/pfmm.py -> build/lib.linux-x86_64-3.7/skfmm
  copying skfmm/setup.py -> build/lib.linux-x86_64-3.7/skfmm

  copying skfmm/heap.py -> build/lib.linux-x86_64-3.7/skfmm
  copying skfmm/__init__.py -> build/lib.linux-x86_64-3.7/skfmm
  running build_ext
  customize UnixCCompiler
  customize UnixCCompiler using build_ext
  customize UnixCCompiler
  customize UnixCCompiler using build_ext
  building 'skfmm.cfmm' extension
  compiling C++ sources
  C compiler: g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC

  creating build/temp.linux-x86_64-3.7/skfmm
  compile options: '-Iskfmm -I/usr/local/lib/python3.7/site-packages/numpy/core/include -I/usr/local/include/python3.7m -c'
  g++: skfmm/fmm.cpp
  error: Command "g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Iskfmm -I/usr/local/lib/python3.7/site-packages/numpy/
core/include -I/usr/local/include/python3.7m -c skfmm/fmm.cpp -o build/temp.linux-x86_64-3.7/skfmm/fmm.o -MMD -MF build/temp.linux-x86_64-3.7/skfmm/fmm.o.d"
 failed with exit status 127
  ----------------------------------------
  ERROR: Failed building wheel for scikit-fmm
  Running setup.py clean for scikit-fmm
Failed to build scikit-fmm
Installing collected packages: scikit-fmm
    Running setup.py install for scikit-fmm ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3
e9d5f6e54/setup.py'"'"'; __file__='"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"
', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-re
cord-gku3heb3/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.7m/scikit-fmm
         cwd: /tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/
    Complete output (28 lines):
Note: if you need to uninstall you should `pip install scikit-fmm` instead of using `setup.py install`
    running install
    running build
    running config_cc
    unifing config_cc, config, build_clib, build_ext, build commands --compiler options
    running config_fc
    unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
    running build_src
    build_src
    building extension "skfmm.cfmm" sources
    building extension "skfmm.pheap" sources
    build_src: building npy-pkg config files
    running build_py
    running build_ext
    customize UnixCCompiler
    customize UnixCCompiler using build_ext
    customize UnixCCompiler
    customize UnixCCompiler using build_ext
    building 'skfmm.cfmm' extension
    compiling C++ sources
    C compiler: g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC

    creating build/temp.linux-x86_64-3.7/skfmm
    compile options: '-Iskfmm -I/usr/local/lib/python3.7/site-packages/numpy/core/include -I/usr/local/include/python3.7m -c'
    g++: skfmm/fmm.cpp
    error: Command "g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Iskfmm -I/usr/local/lib/python3.7/site-packages/nump
y/core/include -I/usr/local/include/python3.7m -c skfmm/fmm.cpp -o build/temp.linux-x86_64-3.7/skfmm/fmm.o -MMD -MF build/temp.linux-x86_64-3.7/skfmm/fmm.o.
d" failed with exit status 127
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bihhvskj/s
cikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/setup.py'"'"'; __file__='"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/setup.py'"'"';
f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"
'))' install --record /tmp/pip-record-gku3heb3/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3
.7m/scikit-fmm Check the logs for full command output.

Update 1更新 1

Thanks to JasonPan's suggestion, I know have all dependencies installed on Azure web app.感谢 JasonPan 的建议,我知道 Azure web 应用程序上安装了所有依赖项。

My app deployment is also successful, but the website does not work.我的应用部署也成功了,但是网站打不开。 I checked the logs and found many errors:我检查了日志,发现很多错误:

2021-04-22T07:44:09.836453360Z [2021-04-22 07:44:09 +0000] [78] [ERROR] Retrying in 1 second.
2021-04-22T07:44:10.838153643Z [2021-04-22 07:44:10 +0000] [78] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:10.839051770Z [2021-04-22 07:44:10 +0000] [78] [ERROR] Retrying in 1 second.
2021-04-22T07:44:11.840184035Z [2021-04-22 07:44:11 +0000] [78] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:11.892574745Z [2021-04-22 07:44:11 +0000] [77] [INFO] Worker exiting (pid: 77)
2021-04-22T07:44:12.375216277Z [2021-04-22 07:44:12 +0000] [80] [INFO] Booting worker with pid: 80
2021-04-22T07:44:15.438983261Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:15.445347462Z  * Environment: production
2021-04-22T07:44:15.486186353Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:15.486284356Z    Use a production WSGI server instead.
2021-04-22T07:44:15.486294356Z  * Debug mode: on
2021-04-22T07:44:15.486487762Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:15.486499263Z  * Restarting with stat
2021-04-22T07:44:16.191646039Z [2021-04-22 07:44:16 +0000] [81] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:16.192867778Z [2021-04-22 07:44:16 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:16.193252490Z [2021-04-22 07:44:16 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:17.198116636Z [2021-04-22 07:44:17 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:17.198923561Z [2021-04-22 07:44:17 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:18.202126554Z [2021-04-22 07:44:18 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:18.202984981Z [2021-04-22 07:44:18 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:19.205241244Z [2021-04-22 07:44:19 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:19.206164874Z [2021-04-22 07:44:19 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:20.212049651Z [2021-04-22 07:44:20 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:20.212092253Z [2021-04-22 07:44:20 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:21.224597387Z [2021-04-22 07:44:21 +0000] [81] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:21.290608046Z [2021-04-22 07:44:21 +0000] [80] [INFO] Worker exiting (pid: 80)
2021-04-22T07:44:21.738321231Z [2021-04-22 07:44:21 +0000] [83] [INFO] Booting worker with pid: 83
2021-04-22T07:44:24.918365696Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:24.919426527Z  * Environment: production
2021-04-22T07:44:24.927208058Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:24.927297361Z    Use a production WSGI server instead.
2021-04-22T07:44:24.927308061Z  * Debug mode: on
2021-04-22T07:44:24.946942144Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:24.948477689Z  * Restarting with stat
2021-04-22T07:44:25.709049858Z [2021-04-22 07:44:25 +0000] [84] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:25.710487501Z [2021-04-22 07:44:25 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:25.710858112Z [2021-04-22 07:44:25 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:26.714606897Z [2021-04-22 07:44:26 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:26.715566625Z [2021-04-22 07:44:26 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:27.720325541Z [2021-04-22 07:44:27 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:27.721384572Z [2021-04-22 07:44:27 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:28.723318203Z [2021-04-22 07:44:28 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:28.724247231Z [2021-04-22 07:44:28 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:29.729845005Z [2021-04-22 07:44:29 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:29.729874606Z [2021-04-22 07:44:29 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:30.737813594Z [2021-04-22 07:44:30 +0000] [84] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:30.856350361Z [2021-04-22 07:44:30 +0000] [83] [INFO] Worker exiting (pid: 83)
2021-04-22T07:44:31.803916981Z [2021-04-22 07:44:31 +0000] [86] [INFO] Booting worker with pid: 86
2021-04-22T07:44:35.656121474Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:35.657028702Z  * Environment: production
2021-04-22T07:44:35.657041702Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:35.657838227Z    Use a production WSGI server instead.
2021-04-22T07:44:35.664767041Z  * Debug mode: on
2021-04-22T07:44:35.694054348Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:35.695509793Z  * Restarting with stat
2021-04-22T07:44:36.453792055Z [2021-04-22 07:44:36 +0000] [87] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:36.461107781Z [2021-04-22 07:44:36 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:36.461484393Z [2021-04-22 07:44:36 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:37.468035639Z [2021-04-22 07:44:37 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:37.469176575Z [2021-04-22 07:44:37 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:38.474207365Z [2021-04-22 07:44:38 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:38.475101293Z [2021-04-22 07:44:38 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:39.480162485Z [2021-04-22 07:44:39 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:39.481085413Z [2021-04-22 07:44:39 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:40.486103803Z [2021-04-22 07:44:40 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:40.487006832Z [2021-04-22 07:44:40 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:41.492332131Z [2021-04-22 07:44:41 +0000] [87] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:41.557393470Z [2021-04-22 07:44:41 +0000] [86] [INFO] Worker exiting (pid: 86)
2021-04-22T07:44:42.033036773Z [2021-04-22 07:44:42 +0000] [89] [INFO] Booting worker with pid: 89
2021-04-22T07:44:45.214064517Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:45.214945645Z  * Environment: production
2021-04-22T07:44:45.215503462Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:45.221783155Z    Use a production WSGI server instead.
2021-04-22T07:44:45.221798256Z  * Debug mode: on
2021-04-22T07:44:45.243216415Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:45.251290463Z  * Restarting with stat
2021-04-22T07:44:46.019374903Z [2021-04-22 07:44:46 +0000] [90] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:46.026407319Z [2021-04-22 07:44:46 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:46.026422620Z [2021-04-22 07:44:46 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:47.031561655Z [2021-04-22 07:44:47 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:47.032497484Z [2021-04-22 07:44:47 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:48.035110541Z [2021-04-22 07:44:48 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:48.035988968Z [2021-04-22 07:44:48 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:49.040344579Z [2021-04-22 07:44:49 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:49.041809624Z [2021-04-22 07:44:49 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:50.042151212Z [2021-04-22 07:44:50 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:50.045851326Z [2021-04-22 07:44:50 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:51.064407674Z [2021-04-22 07:44:51 +0000] [90] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:51.114340611Z [2021-04-22 07:44:51 +0000] [89] [INFO] Worker exiting (pid: 89)
2021-04-22T07:44:51.546058198Z [2021-04-22 07:44:51 +0000] [92] [INFO] Booting worker with pid: 92
2021-04-22T07:44:54.704747927Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:54.764574498Z  * Environment: production
2021-04-22T07:44:54.764595098Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:54.764601098Z    Use a production WSGI server instead.
2021-04-22T07:44:54.764604898Z  * Debug mode: on
2021-04-22T07:44:54.764659100Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:54.764668000Z  * Restarting with stat
2021-04-22T07:44:55.487360391Z [2021-04-22 07:44:55 +0000] [93] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:55.494123403Z [2021-04-22 07:44:55 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:55.495235437Z [2021-04-22 07:44:55 +0000] [93] [ERROR] Retrying in 1 second.

Searched a while and tried the fuser or kill commands I found online, but fuser is not recognized on Web app, and kill command just doesn't work with this error message:搜索了一段时间并尝试了我在网上找到的fuserkill命令,但在 Web 应用程序上无法识别fuser ,并且kill命令无法处理此错误消息:

/home# kill `lsof -i :8000`
-bash: lsof: command not found
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l

Update 2更新 2

using the below command:使用以下命令:

gunicorn --bind=0.0.0.0 --timeout 600 application:app gunicorn --bind=0.0.0.0 --timeout 600 应用程序:应用程序

and here is the output这是 output

ut 600  application:app18b:/tmp/8d90556500a845d# gunicorn --bind=0.0.0.0 --timeou
[2021-04-23 07:30:39 +0000] [93] [INFO] Starting gunicorn 20.0.4
[2021-04-23 07:30:39 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:39 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:40 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:40 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:41 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:41 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:42 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:42 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:43 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:43 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:44 +0000] [93] [ERROR] Can't connect to ('0.0.0.0', 8000)

Using Azure app SSH under the Advanced tool, it's such a pain.在 Advanced 工具下使用 Azure app SSH,真是太痛苦了。 My ssh console got disconnected every often and sometimes it amount the correct folder for me, then I can see my python code files.我的 ssh 控制台经常断开连接,有时它对我来说是正确的文件夹,然后我可以看到我的 python 代码文件。 Other times it shows me a strange folder which has no my code at all.... eg其他时候,它会显示一个奇怪的文件夹,其中根本没有我的代码......例如

root@ece8fefe856f:/home# ls
37391ef6fffba0c96cda20c7  ASP.NET  LogFiles  site

UPDATE更新

After my test, because the latest version of scikit-fmm is not compatible with azure web app, I used the scikit-fmm==2021.1.21 version.经过我的测试,因为scikit-fmm最新版本不兼容azure web app,所以我使用了scikit-fmm==2021.1.21版本。 It works for me.这个对我有用。

在此处输入图像描述

Thanks for Glenn's reminder, you can use below cmd in webssh.感谢 Glenn 的提醒,您可以在 webssh 中使用下面的 cmd。

apt-get update
apt-get install g++
pip install scikit-fmm==2021.1.21

PREVIOUS以前的

Without knowing which packages you need to install in your requirements.txt.在不知道需要在 requirements.txt 中安装哪些软件包的情况下。

I personally recommend that you create azure web app with container (linux), so that you can manually execute the script to install the packages used by the project after deploying the project.我个人建议大家用容器(linux)创建azure web app,这样在部署项目后可以手动执行脚本安装项目使用的包。

I have not deployed a flask application under Linux.我还没有在 Linux 下部署 flask 应用程序。 If you can use windows, I recommend using windows webapp.如果可以使用 windows,我推荐使用 windows webapp。

You can refer my answer in below post.您可以在下面的帖子中参考我的答案。

How to deploy a Flask+React application to Azure Web Service 如何将 Flask+React 应用程序部署到 Azure Web 服务

The 127 status code for the g++ command suggests that g++ is not installed on the platform where you tried that install. g++ 命令的 127 状态代码表明 g++ 未安装在您尝试安装的平台上。 Do you get the same error on all the platforms?您是否在所有平台上都遇到相同的错误?

You can choose to deploy via the Heroku Docker Registry building the image locally and (after testing) pushing it to Heroku.您可以选择通过 Heroku Docker Registry 在本地构建映像并(经过测试)将其推送到 Heroku 进行部署。 The advantage is that you control the build (not Heroku).优点是您可以控制构建(而不是 Heroku)。

Define the Dockerfile of the Python app (example below)定义 Python 应用程序的 Dockerfile(示例如下)

FROM python:3.9-slim

COPY app/ /app

EXPOSE 5000

WORKDIR /app
RUN pip install -r requirements.txt

ENTRYPOINT ["python"]
CMD ["app.py"]

Build the image locally (using the naming conventions required by Heroky ie appname)在本地构建镜像(使用 Herky 所需的命名约定,即 appname)

# build image
docker build -t registry.heroku.com/appname/web .

The image should contain your app and all dependencies/models you need.该图像应包含您的应用程序和您需要的所有依赖项/模型。 You can test this locally with docker run .您可以使用docker run在本地进行测试。

Push and release the image:推送并释放图像:

# login into Docker Registry (only once)
heroku container:login
# push
docker push registry.heroku.com/appname/web
# release
heroku container:release web -a appname

I finally figured out how to deploy Python API project on Azure using Web App.我终于想通了如何使用 ZC6E190B2854633C3CCE8EZ 应用程序在 Azure 上部署 Python API 项目。

Btw, I changed to use FastAPI rather than Flask, as FastAPI is newer and packed with more features.顺便说一句,我改用 FastAPI 而不是 Flask,因为 FastAPI 更新并包含更多功能。

The very important tip is to look into the log.非常重要的提示是查看日志。

I actually already know it, but I could not find the log.我其实已经知道了,但是我找不到日志。

I then found a log stream which is constantly streaming logs to this page:然后我发现了一个日志 stream ,它不断地将日志流式传输到此页面:

https://{your-web-app-name}.scm.azurewebsites.net/api/logstream https://{your-web-app-name}.scm.azurewebsites.net/api/logstream

From here, I was able to see that many issues I had were because of missing packages.从这里,我可以看到我遇到的许多问题都是因为缺少包裹。

Also under Settings --> Configuration --> General settings, put the below code into Startup Command:同样在设置->配置->常规设置下,将以下代码放入启动命令:

gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --timeout 1200

One more place to point out: I also looked at the Log under Deployment Center .还有一点需要指出:我还查看了Deployment Center下的Log Don't be misled by its notification.不要被它的通知误导。 I saw deployed successfully, I thought everything was correct, but it's not.我看到部署成功,我以为一切都正确,但事实并非如此。

You could still have missing packages when the deployment was successful.部署成功后,您仍然可能缺少包。

So do look into the Log Stream.所以请查看日志 Stream。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM