我试图找出构建Django应用程序的最佳方法,该应用程序使用Celery在自动缩放AWS ElasticBeanstalk环境中处理异步和计划任务.
到目前为止,我只使用了Celery + Celerybeat的单个实例Elastic Beanstalk环境,这非常好用.但是,我希望在我的环境中运行多个实例,因为每个实例都会崩溃,并且在实例重新启动之前需要花费很多时间,但是我无法将当前的体系结构扩展到多个实例,因为Celerybeat应该在所有实例中只运行一次,否则Celerybeat安排的每个任务将被多次提交(对于环境中的每个EC2实例一次).
我已经阅读了多个解决方案,但是所有这些解决方案似乎都存在一些问题,这些问题并不适用于我:
如何在分布式Elastic Beanstalk环境中将Celery与计划任务一起使用而不进行任务复制?例如,如何确保在Elastic Beanstalk环境中始终在所有实例中运行一个实例(即使Celerybeat的当前实例崩溃)?
有没有其他方法可以实现这一目标?在Django中使用Elastic Beanstalk的Worker Tier环境的最佳方法是什么?
我已经阅读了这里和其他论坛上所有相关的 traefik / websocket 问题,但我无法解决我的设置问题。
我正在尝试在 Traefik 后面运行 Dataiku DSS 作为反向代理。但我对 Traefik 还很陌生,不知道如何通过 Traefik 为我的服务工作创建 websocket。
我正在使用以下配置:
traefik.yml:
api:
dashboard: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
http:
acme:
email: admin@example.com
storage: acme.json
httpChallenge:
entryPoint: http
Run Code Online (Sandbox Code Playgroud)
traefik/docker-compose.yml:
version: '3'
services:
traefik:
image: traefik:v2.0
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http" …
Run Code Online (Sandbox Code Playgroud)