Python Django、信号和另一个进程
我的Django项目运行良好,还有一个单独的后台进程,它将从各种来源收集数据并将数据存储在索引中 我在Django应用程序中有一个名为Python Django、信号和另一个进程,python,django,multiprocessing,signals,Python,Django,Multiprocessing,Signals,我的Django项目运行良好,还有一个单独的后台进程,它将从各种来源收集数据并将数据存储在索引中 我在Django应用程序中有一个名为Sources的模型,它本质上包含一个数据来源列表!我成功地创建了一个信号,当在Sources模型中放入新条目时,该信号被激活/调用 我的问题是,有没有一种大家都知道的简单方法,可以让我向后台进程发送某种形式的信号/消息,表明源模型已经更改?或者我应该每x秒轮询一次更改,因为这要简单得多 非常感谢您提供的帮助。如果您不需要分秒延迟,轮询可能是最简单的 但是,如果你
Sources
的模型,它本质上包含一个数据来源列表!我成功地创建了一个信号,当在Sources
模型中放入新条目时,该信号被激活/调用
我的问题是,有没有一种大家都知道的简单方法,可以让我向后台进程发送某种形式的信号/消息,表明源
模型已经更改?或者我应该每x秒轮询一次更改,因为这要简单得多
非常感谢您提供的帮助。如果您不需要分秒延迟,轮询可能是最简单的 但是,如果你这样做了,那么你可能会想调查其中任何一个,比如
- 向进程发送UNIX信号(或IPC的其他方法,取决于平台)
- 让后台进程有一个简单的监听套接字,您只需向它发送一个字节(无可否认,这是IPC的一种形式),它就会触发您想要触发的操作
- 或者某种任务/消息队列。或者我会想到
- 不清楚您是如何运行您所说的后台进程的
无论如何,我建议您在后台任务中直接使用
源代码模型。有一些方便的方法可以在不离开Django领域的情况下运行任务(以便访问您的模型。例如,您可以使用芹菜[1]或RQ[2]
这样您就不需要传递任何消息,对源
模型的任何更改都将在下次运行任务时生效
[1] 芹菜是一个开源的异步任务队列/作业队列,它不难设置并与Django很好地集成
[2] RQ的意思是“Redis队列”,它是“一个简单的Python库,用于将作业排队并在后台与工人一起处理它们”
我认为你没有给我们足够的关于后台进程的信息。它们是什么?通过Python运行的东西多处理
?对不起-后台进程是完全独立的。由另一个命令在终端启动。太棒了,我想我应该试试芹菜。非常感谢你的回复!