ElasticBeanstalk突然开始以“由于未安装枕头而无法使用ImageField”例外部署Django App失败

问题描述 投票:1回答:2

我正在使用弹性beantalk来部署Django应用程序。今天,它突然停止了工作,而没有在应用程序端进行任何重大更改(我更改了一些模板,仅此而已)。

[尝试部署应用程序10分钟后,部署超时,但没有任何反应。

我在日志中只能看到的或多或少有用的提示是:

[2020-02-20T15:00:20.437Z] INFO  [19057] - [Application update .../postbuild_0_myproject/Command 01_migrate] : Activity execution failed, because: SystemCheckError: System check identified some issues:

  ERRORS:
  education.Author.photo: (fields.E210) Cannot use ImageField because Pillow is not installed.
  HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "pip install Pillow".
  education.Course.cover_image: (fields.E210) Cannot use ImageField because Pillow is not installed.
  HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "pip install Pillow".
  education.CourseCategory.icon_image: (fields.E210) Cannot use ImageField because Pillow is not installed.
  HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "pip install Pillow".
  Using staging settings
  App receivers connected
   (ElasticBeanstalk::ExternalInvocationError)


[2020-02-20T15:00:20.437Z] INFO  [19057] - [Application update .../postbuild_0_myproject/Command 01_migrate] : Activity failed.
[2020-02-20T15:00:20.437Z] INFO  [19057] - [Application update .../postbuild_0_myproject] : Activity failed.
[2020-02-20T15:00:20.437Z] INFO  [19057] - [Application update ...] : Activity failed.
[2020-02-20T15:00:20.507Z] INFO  [19057] - [Application update app-9a24-200220_145942-stage-200220_145942@142/AppDeployStage0/EbExtensionPostBuild] : Activity failed.
[2020-02-20T15:00:20.507Z] INFO  [19057] - [Application update app-9a24-200220_145942-stage-200220_145942@142/AppDeployStage0] : Activity failed.
[2020-02-20T15:00:20.508Z] INFO  [19057] - [Application update app-9a24-200220_145942-stage-200220_145942@142] : Completed activity. Result:
  Application update - Command CMD-AppDeploy failed

但是我已经在requirements.txt中添加了枕头,并且上面的日志显示:

  Requirement already satisfied: Pillow==6.2.1 in /opt/python/run/venv/lib64/python3.6/site-packages (from -r /opt/python/ondeck/app/requirements.txt (line 51))

如何解决并解决此问题?以及将来如何避免类似问题?我真的很害怕,同样的问题可能会在生产环境中随机弹出。


有关配置的更多信息:

这是.ebextensions中的内容:

01_packages.config

packages:
  yum:
    git: []
    postgresql93-devel: []

db-migrate.config

container_commands:
  01_migrate:
    command: "django-admin.py migrate"
    leader_only: true
option_settings:
  aws:elasticbeanstalk:application:environment:
    DJANGO_SETTINGS_MODULE: myproject.settings

django.config

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: myproject/wsgi.py

wsgi_custom.config

files:
  "/etc/httpd/conf.d/wsgihacks.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      WSGIPassAuthorization On
python django amazon-web-services amazon-elastic-beanstalk
2个回答
0
投票
我通常通过使用conda及其等效的virtualenv来解决此问题的方法,以确保使用正确的解释器(带有我的软件包的解释器)。

[如果您没有使用virtualenv或同等的虚拟机,请现在设置一个,如果您已经在使用它,那么请检查您是否正在使用pip3 install pillow安装枕头-pip3在这里像在debian(和许多其他)系统上一样重要正常的pip仅适用于python2.x。

使用conda可以确保在生产中不会发生这种情况,但是我还将其添加到部署时要检查的事情清单中-检查枕头设置和工作的正确版本。


0
投票
其中一个通过重启环境解决了问题。

另一个未能重新启动,并且每次执行任何操作都超时。我设法解决此问题,方法是转到“配置”>“容量”,并将实例的最小和最大数量更改为0。我已经应用了更改,等待它们应用,然后返回最小和最大实例数的先前值。] >

解决了问题。

我仍然不知道是什么原因导致了这个问题,很想收到对此的评论。

© www.soinside.com 2019 - 2024. All rights reserved.