将外部添加的数据捕获到 Django 中的 Postgres 数据库
Catch externally added data to Postgres database in Django
我的项目有一个 Django 后端,使用 Postgres 作为数据库。除此之外,我有一个系统服务 运行ning 并在数据库中的特定 table 中插入一个新行。我需要检测在 table 到 运行 回调函数中插入新行的时刻,这是在 Django 中定义的。该服务需要不同的时间才能完成。我也想让它更有效率。我想到了这些选项:
- 以前在项目中用过celery,现在不用了。它已经设置好了,所以我认为一个选项是 PeriodicTask 来检查是否添加了某些内容。不过,我不喜欢周期性任务,而且它不是很精确(服务完成时间和任务时间之间可能存在间隔 运行s)。如此简单但丑陋
- 如果可能的话,我想使用 Postgres TRIGGER 将我的回调任务插入到 Celery 队列中。在纸面上,这听起来又快又干净。我不知道如何向 Celery 任务队列中添加一些东西。如此干净和高效但困难
- 我想实现一个单独的服务来监听来自 Postgres 的 NOTIFY,也使用 TRIGGER。然后它会卷曲后端以启动回调函数。这看起来很笨重。所以嗯
如果你觉得我不太了解这些,那你是对的。我边走边学,但这对我来说是必须具备的功能。任何帮助将非常感激。
您可以添加一个 django management command 并在当前服务执行后调用它。
再举个例子:
[Unit]
...
[Service]
...
ExecStart=java -jar file.jar && /.../python /.../manage.py <management_command>
[Install]
...
我的项目有一个 Django 后端,使用 Postgres 作为数据库。除此之外,我有一个系统服务 运行ning 并在数据库中的特定 table 中插入一个新行。我需要检测在 table 到 运行 回调函数中插入新行的时刻,这是在 Django 中定义的。该服务需要不同的时间才能完成。我也想让它更有效率。我想到了这些选项:
- 以前在项目中用过celery,现在不用了。它已经设置好了,所以我认为一个选项是 PeriodicTask 来检查是否添加了某些内容。不过,我不喜欢周期性任务,而且它不是很精确(服务完成时间和任务时间之间可能存在间隔 运行s)。如此简单但丑陋
- 如果可能的话,我想使用 Postgres TRIGGER 将我的回调任务插入到 Celery 队列中。在纸面上,这听起来又快又干净。我不知道如何向 Celery 任务队列中添加一些东西。如此干净和高效但困难
- 我想实现一个单独的服务来监听来自 Postgres 的 NOTIFY,也使用 TRIGGER。然后它会卷曲后端以启动回调函数。这看起来很笨重。所以嗯
如果你觉得我不太了解这些,那你是对的。我边走边学,但这对我来说是必须具备的功能。任何帮助将非常感激。
您可以添加一个 django management command 并在当前服务执行后调用它。
再举个例子:
[Unit]
...
[Service]
...
ExecStart=java -jar file.jar && /.../python /.../manage.py <management_command>
[Install]
...