应用程序错误Azure:ModuleNotFoundError:没有名为“ flask_socketio”的模块

问题描述

我正在尝试在 Azure 上使用 Gunicorn 部署 Flask应用程序。我的应用程序可以在localhost甚至Heroku上完美运行,但是当我尝试在Azure Web App上部署它时,它无法构建并显示 ModuleNotFoundError:没有名为“ flask_socketio”的模块。 在Azure中进行部署之前,我已经设置了虚拟环境并正确安装了所有软件包。我正在使用Azure-CLI来部署应用程序。我已经在配置中打开了Web套接字选项,并在Python 3.8上运行了我的应用程序。 出于测试目的,我已部署了一个Smiple Flask应用程序,该应用程序已成功部署并正在运行。

Github链接到我的项目:FlaskWebcam

错误日志:

Starting Live Log Stream ---

2020-09-13T19:56:18.960Z INFO  - Starting container for site
2020-09-13T19:56:18.963Z INFO  - docker run -d -p 9708:8000 --name inverseflask_0_16637254 -e WEBSITE_SITE_NAME=InverseFlask -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=inverseflask.azurewebsites.net -e WEBSITE_INSTANCE_ID=26433a6b0a3346c389469a9d486d0892e34237dd74d5333601dda5fe35c941b8 -e HTTP_LOGGING_ENABLED=1 appsvc/python:3.8_20200707.6
2020-09-13T19:56:22.884Z INFO  - Initiating warmup request to container inverseflask_0_16637254 for site inverseflask
2020-09-13T19:56:38.900Z INFO  - Waiting for response to warmup request for container inverseflask_0_16637254. Elapsed time = 16.0166497 sec
2020-09-13T19:56:21.995899368Z
2020-09-13T19:56:21.995956370Z   _____
2020-09-13T19:56:21.995966670Z   /  _  \ __________ _________   ____
2020-09-13T19:56:21.995974271Z  /  /_\  \___   /  |  \_  __ \_/ __ \
2020-09-13T19:56:21.995981571Z /    |    \/    /|  |  /|  | \/\  ___/
2020-09-13T19:56:21.995988971Z \____|__  /_____ \____/ |__|    \___  >
2020-09-13T19:56:21.995996371Z         \/      \/                  \/
2020-09-13T19:56:22.001078169Z
2020-09-13T19:56:22.001105870Z A P P   S E R V I C E   O N   L I N U X
2020-09-13T19:56:22.001114471Z
2020-09-13T19:56:22.001121571Z Documentation: http://aka.ms/webapp-linux
2020-09-13T19:56:22.001128571Z Python 3.8.3
2020-09-13T19:56:22.001251176Z Note: Any data outside '/home' is not persisted
2020-09-13T19:56:22.182082317Z Starting OpenBSD Secure Shell server: sshd.
2020-09-13T19:56:22.229719372Z App Command Line not configured,will attempt auto-detect
2020-09-13T19:56:22.230599206Z Launching oryx with: create-script -appPath /home/site/wwwroot -output /opt/startup/startup.sh -virtualEnvName antenv -defaultApp /opt/defaultsite
2020-09-13T19:56:22.323448922Z Found build manifest file at '/home/site/wwwroot/oryx-manifest.toml'. Deserializing it...
2020-09-13T19:56:22.329158744Z Build Operation ID: |Y6gr/BhPUcQ=.36185211_
2020-09-13T19:56:22.330353391Z Oryx Version: 0.2.20200706.2,Commit: 42be45d884938c3c818ba08e9e4760b1136fd9b3,ReleaseTagName: 20200706.2
2020-09-13T19:56:23.087122158Z Detected an app based on Flask
2020-09-13T19:56:23.344716588Z Generating `gunicorn` command for 'application:app'
2020-09-13T19:56:23.837293868Z Writing output script to '/opt/startup/startup.sh'
2020-09-13T19:56:24.399410856Z Found virtual environment .tar.gz archive.
2020-09-13T19:56:24.400232088Z Removing existing virtual environment directory /antenv...
2020-09-13T19:56:24.419407435Z Extracting to directory /antenv...
2020-09-13T19:56:46.138875734Z Using packages from virtual environment antenv located at /antenv.
2020-09-13T19:56:46.145147100Z Updated PYTHONPATH to ':/antenv/lib/python3.8/site-packages'
2020-09-13T19:56:48.737945237Z [2020-09-13 19:56:48 +0000] [41] [INFO] Starting gunicorn 20.0.4
2020-09-13T19:56:48.742939236Z [2020-09-13 19:56:48 +0000] [41] [INFO] Listening at: http://0.0.0.0:8000 (41)
2020-09-13T19:56:48.743827471Z [2020-09-13 19:56:48 +0000] [41] [INFO] Using worker: sync
2020-09-13T19:56:48.756394071Z [2020-09-13 19:56:48 +0000] [43] [INFO] Booting worker with pid: 43
2020-09-13T19:56:49.372391696Z [2020-09-13 19:56:49 +0000] [43] [ERROR] Exception in worker process
2020-09-13T19:56:49.372452399Z Traceback (most recent call last):
2020-09-13T19:56:49.372464099Z   File "/opt/python/3.8.3/lib/python3.8/site-packages/gunicorn/arbiter.py",line 583,in spawn_worker
2020-09-13T19:56:49.372502201Z     worker.init_process()
2020-09-13T19:56:49.372511001Z   File "/opt/python/3.8.3/lib/python3.8/site-packages/gunicorn/workers/base.py",line 119,in init_process
2020-09-13T19:56:49.372518901Z     self.load_wsgi()
2020-09-13T19:56:49.372526102Z   File "/opt/python/3.8.3/lib/python3.8/site-packages/gunicorn/workers/base.py",line 144,in load_wsgi
2020-09-13T19:56:49.372533802Z     self.wsgi = self.app.wsgi()
2020-09-13T19:56:49.372540902Z   File "/opt/python/3.8.3/lib/python3.8/site-packages/gunicorn/app/base.py",line 67,in wsgi
2020-09-13T19:56:49.372548402Z     self.callable = self.load()
2020-09-13T19:56:49.372555403Z   File "/opt/python/3.8.3/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py",line 49,in load
2020-09-13T19:56:49.372563003Z     return self.load_wsgiapp()
2020-09-13T19:56:49.372570103Z   File "/opt/python/3.8.3/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py",line 39,in load_wsgiapp
2020-09-13T19:56:49.372577604Z     return util.import_app(self.app_uri)
2020-09-13T19:56:49.372584604Z   File "/opt/python/3.8.3/lib/python3.8/site-packages/gunicorn/util.py",line 358,in import_app
2020-09-13T19:56:49.372591904Z     mod = importlib.import_module(module)
2020-09-13T19:56:49.372598904Z   File "/opt/python/3.8.3/lib/python3.8/importlib/__init__.py",line 127,in import_module
2020-09-13T19:56:49.372606505Z     return _bootstrap._gcd_import(name[level:],package,level)
2020-09-13T19:56:49.372613605Z   File "<frozen importlib._bootstrap>",line 1014,in _gcd_import
2020-09-13T19:56:49.372622005Z   File "<frozen importlib._bootstrap>",line 991,in _find_and_load
2020-09-13T19:56:49.372629606Z   File "<frozen importlib._bootstrap>",line 975,in _find_and_load_unlocked
2020-09-13T19:56:49.372637306Z   File "<frozen importlib._bootstrap>",line 671,in _load_unlocked
2020-09-13T19:56:49.372644706Z   File "<frozen importlib._bootstrap_external>",line 783,in exec_module
2020-09-13T19:56:49.372652207Z   File "<frozen importlib._bootstrap>",line 219,in _call_with_frames_removed
2020-09-13T19:56:49.372659707Z   File "/home/site/wwwroot/application.py",line 4,in <module>
2020-09-13T19:56:49.372667207Z     from flask_socketio import SocketIO
2020-09-13T19:56:49.372674407Z ModuleNotFoundError: No module named 'flask_socketio'
2020-09-13T19:56:49.380001099Z [2020-09-13 19:56:49 +0000] [43] [INFO] Worker exiting (pid: 43)
2020-09-13T19:56:49.465561206Z [2020-09-13 19:56:49 +0000] [41] [INFO] Shutting down: Master
2020-09-13T19:56:49.466915059Z [2020-09-13 19:56:49 +0000] [41] [INFO] Reason: Worker Failed to boot.
2020-09-13T19:56:54.880Z ERROR - Container inverseflask_0_16637254 for site inverseflask has exited,failing site start
2020-09-13T19:56:54.893Z ERROR - Container inverseflask_0_16637254 didn't respond to HTTP pings on port: 8000,failing site start. See container logs for debugging.
2020-09-13T19:56:54.903Z INFO  - Stopping site inverseflask because it Failed during startup.

解决方法

从您的描述来看,您似乎已经安装了此模块,但是我想知道如何部署它?通常情况下,我们需要一个名为requirements.txt的文件来安装依赖包。在本地安装它是没有用的。还需要在requirements.txt中指定它,然后进行部署。

看看这个:

https://docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems/python-webapp?view=azure-devops

,

对于它的价值,我正在尝试做一些非常相似的事情。看来我能够在Web应用程序上安装flask_socketio。我主要遵循本教程:Create a Python app in Azure App Service on Linux。话虽如此,我首先在我的requirements.txt中包括了这一行:flask_socketio == 4.3.1,但是我得到了您的错误。然后,我将其pip安装到我的本地python虚拟环境中(pip install flask_socketio == 4.3.1),并在重新部署后似乎可以修复该错误。

不过,我仍然收到错误消息。从浏览器的``网络''选项卡中,我看到例如:index.js:83 POST https://.azurewebsites.net/socket.io/?EIO = 3&transport = polling&t = NITSD38&sid = 0439a49c525247a79bf2b80792ba2636 400(BAD REQUEST)