如何解决泊坞窗内的Django服务器是否导致机器人测试显示空白屏幕?
我已经在docker compose内部构建了一个环境,以便运行机器人测试。该环境由Django Web应用程序,postgres和机器人框架容器组成。我遇到的问题是,在不同的测试中会出现很多空白屏幕,而使用安装在虚拟机上的外部Django Web应用程序实例则不会出现此问题。 黑屏会导致找不到元素,从而导致很多失败:
JavascriptException: Message: javascript error: Cannot read property 'get' of undefined
(Session info: headless chrome=84.0.4147.89)
我确定问题出在Django应用程序容器本身而不是机器人容器,因为如上所述,我已经在相同的环境下进行了测试,但是针对安装在Docker外部的其他Web应用程序进行了测试。
docker-compose.yml:
version: "3.6"
services:
redis:
image: redis:3.2
ports:
- 6379
networks:
local:
ipv4_address: 10.0.0.20
smtpd:
image: mysmtpd:1.0.5
ports:
- 25
networks:
- local
postgres:
image: mypostgres
build:
context: ../dias-postgres/
args:
VERSION: ${POSTGRES_TAG:-12}
hostname: "postgres"
environment:
POSTGRES_DB: ${POSTGRES_USER}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
networks:
local:
ipv4_address: 10.0.0.100
ports:
- 5432
volumes:
- my-postgres:/var/lib/postgresql/data
app:
image: mypyenv:${PYENV_TAG:-1.1}
tty: true
stdin_open: true
user: ${MY_USER:-jenkins}
networks:
local:
ipv4_address: 10.0.0.50
hostname: "app"
ports:
- 8000
volumes:
- ${WORKSPACE}:/app
environment:
ALLOW_HOST: "*"
PGHOST: postgres
PGUSER: ${POSTGRES_USER}
PGDATABASE: ${POSTGRES_USER}
PGPASSWORD: ${POSTGRES_PASSWORD}
ANONYMIZE: "false"
REDIS_HOST: redis
REDIS_DB: 2
APP_PATH: ${APP_PATH}
APP: ${MANDANT}
TIMER: ${TIMER:-20}
EMAIL_BACKEND: "dias.core.log.mail.SmtpEmailBackend"
EMAIL_HOST: "smtpd"
EMAIL_PORT: "25"
robot:
image: myrobot:${ROBOT_TAG:-1.0.9}
user: ${ROBOT_USER:-jenkins}
networks:
local:
ipv4_address: 10.0.0.70
volumes:
- ${WORKSPACE}:/app
- ${ROBOT_REPORTS_PATH}:/APP_Robot_Reports
environment:
APP_ROBOT: ${APP_ROBOT}
TIMER: ${TIMER:-20}
PGHOST: postgres
PGUSER: ${POSTGRES_USER}
PGDATABASE: ${POSTGRES_USER}
PGPASSWORD: ${POSTGRES_PASSWORD}
THREADS: ${THREADS:-4}
tty: true
stdin_open: true
entrypoint: start-robot
networks:
local:
driver: bridge
ipam:
config:
- subnet: 10.0.0.0/24
volumes:
my-postgres:
external: true
name: my-postgres
我已经监视了应用程序的统计信息,并且在测试过程中没有异常。另外,在浏览器中手动测试了该应用程序,它看起来不错,没有错。 注意:chromedriver和google chrome版本之间没有不匹配的地方(无论如何,因为同一个机器人容器可以与其他实例(其中Django应用程序不使用Docker的实例)一起使用,所以没关系)
有人有想法吗?
解决方法
在django应用程序由2个芹菜工人启动时,我没有集中精力运行8个流程的pabot。一旦我将芹菜工人增加到4名,它就会起作用。虽然不确定这是否是真正的原因,但对我来说它是可行的,而且可行。
celery -A server -c ${CELERY_CONCURRENCY:-2} worker
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。