我目前正在做一个Django项目,在处理不同容器的信号时遇到了一些问题。你知道吗
我有一个连接到上游数据管道并填充Django数据库的第一个容器。我有一个用于后端本身的其他容器,我正在其上运行服务器。我想用信号“后保存”的信号,我的应用程序之一,一个新的模型实例已保存。因此,我使用应用程序中的下一段代码来接收此信号并处理已保存的实例。你知道吗
@receiver(post_save, sender=Organization)
def index_post_save(sender, instance, **kwargs):
connections.create_connection(hosts=['elasticsearch'])
instance.indexing()
如果我在Django管理界面上手动创建一个Organization实例,那么这将非常有效,但是在用第一个容器填充数据库时,不会收到信号。你知道吗
以下是docker compose文件的一部分,其中包含我描述的两个容器:
worker:
build:
context: .
dockerfile: Dockerfile
command: ./run_celery.sh
env_file:
- ./.envs/.local/.workers
volumes:
- .:/app
web:
restart: always
build:
context: .
dockerfile: Dockerfile
hostname: web
command: /app/run_web.sh
env_file:
- ./.envs/.local/.web
volumes:
- .:/app
ports:
- "80:8000"
links:
- db
- pipeline_db
depends_on:
- db
- pipeline_db
- elasticsearch
有没有一种方法可以跨容器使用Django信号,或者我应该使用其他方法来发送和接收这些消息?你知道吗
谢谢
等等什么?这些信号只在django项目中工作,一个信号可以到达的最外部点是在方法内部运行save()命令并检查数据库是否保存了它。。。你知道吗
你所能做的就是在你的终端上运行一些python代码,或者API,或者socket,或者任何你想说的通信。你知道吗
所以给一个镜头,你可以使一个API到你的管道上游(我不知道它是什么)能够接收一些POST或GET方法,并设置你的后端发送一个请求到你的应用程序(在其他容器)接收数据,你想要的。。。您可以使用
requests
或curl
我认为你正在使用两个不同的容器服务器
相关问题 更多 >
编程相关推荐