Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Django数据库看门狗在Django外部保存信号_Mysql_Django_Django Signals_Watchdog - Fatal编程技术网

Mysql Django数据库看门狗在Django外部保存信号

Mysql Django数据库看门狗在Django外部保存信号,mysql,django,django-signals,watchdog,Mysql,Django,Django Signals,Watchdog,我有以下问题: 我使用的是Django框架。 系统中的一个部分(非django)写入数据库,与django使用的数据库相同。 我想在保存对象时发出信号。它是一个django模型对象,但不是通过django保存的,而是直接保存在mysql数据库中 当django没有保存数据库时,django有没有办法监视数据库中的保存操作 最简单的方法是:创建一个Api,并让保存操作通过该Api运行。保存信号可以是django默认值。(但这取决于外部的一些工作……因此,对于未来的发展来说,这肯定不是首选的路线)

我有以下问题: 我使用的是Django框架。 系统中的一个部分(非django)写入数据库,与django使用的数据库相同。 我想在保存对象时发出信号。它是一个django模型对象,但不是通过django保存的,而是直接保存在mysql数据库中

当django没有保存数据库时,django有没有办法监视数据库中的保存操作

最简单的方法是:创建一个Api,并让保存操作通过该Api运行。保存信号可以是django默认值。(但这取决于外部的一些工作……因此,对于未来的发展来说,这肯定不是首选的路线)

另一个选项是实现芹菜,并创建一个任务,该任务经常查看保存的对象中是否有一个没有后续。。。。。(我想,为了让它运行起来,我也放弃了一些困惑)

但可能有一个更简单的。。。对我来说不知道? 我看到了django文件系统看门狗解决方案。。。不适用于数据库(可能是因为django在通过django正确完成时内置了此功能)


要使其复杂化:我使用sqlite在本地进行测试和开发。。。。但是,我可以在测试中输入save信号,而无需在本地工作。。。。只要它在mysql中工作,我就很高兴。

您可以尝试以下解决方案:

  • 创建一个新表“django\u watch”,其中有一列“object\u id”(根据您的标准添加其他列,如“created\u datetime”等)

  • 假设您的主表是“对象””。为此表上的INSERT事件添加一个

  • 您应该在触发器内添加一个额外的insert查询,以将对象id插入到“django\u watch”表中

  • 现在您可以拥有一个cronjob,它将输入新表“django_watch”(用于django对象中的更新)并执行必要的操作。您可以连续运行此cronjob,延迟约1分钟(由您决定)


  • 最后,我编写了一个可由第三方模块调用的api。我将使用c代码登录django的代码传递给这个api,并调用这个api的GET。(使用django rest框架)。这个api只保存对象(url中给出的id),然后保存它的默认django。第三方必须做的唯一一件事就是在我的代码中构建调用api的代码


    也许不是最好的解决方案,但对我的问题来说是最好的实现…

    Hi@michel.iamit请让我知道这是否有帮助。感谢这个选项,很高兴知道我可以在mysql中设置触发器,但是。。。为什么不让cronjob直接查看表呢?我现在正在看芹菜。。。我发现crontab作业不能安排在1分钟以下(除了使用一些技巧)。幸运的是,芹菜除了cronjob之外还有其他用于短任务的对象。。。mysql和cronjob中的额外设置。。。在我看来,这让管理变得更加复杂。。。