在Django中运行后台python脚本的更好方法

在Django中运行后台python脚本的更好方法,python,django,asynchronous,django-rest-framework,Python,Django,Asynchronous,Django Rest Framework,我是Django的新手,需要一些指导 我在Django中寻找一些东西,它允许我在我的网站继续工作时运行后台任务,也许我可以检查任务的状态 所以基本上我在做一个侦察引擎。这个引擎将运行其他python脚本,并以一种漂亮而奇特的方式显示结果。python脚本和其他工具已经由其他人开发。我的网站的工作是运行那些python&shell脚本并将结果保存回数据库。这些工具将需要相当长的时间来收集结果 那么,什么是最好的方法呢?我找了芹菜和Django Q,看起来这对我的小任务来说是一种过度的杀伤力。芹菜和

我是Django的新手,需要一些指导

我在Django中寻找一些东西,它允许我在我的网站继续工作时运行后台任务,也许我可以检查任务的状态

所以基本上我在做一个侦察引擎。这个引擎将运行其他python脚本,并以一种漂亮而奇特的方式显示结果。python脚本和其他工具已经由其他人开发。我的网站的工作是运行那些python&shell脚本并将结果保存回数据库。这些工具将需要相当长的时间来收集结果

那么,什么是最好的方法呢?我找了芹菜和Django Q,看起来这对我的小任务来说是一种过度的杀伤力。芹菜和Django有很多设置,尽管我乐于学习新东西,对于一个在后台运行的简单任务,我不希望使用真正复杂的东西

请大家提出在后台做某事的更好方法,任务完成后,可能会通知Django并收集结果,或者当任务正在运行时,我可以选择检查任务的状态、已完成、已终止或仍在运行。

我建议使用

您不需要其他代理(mq、redis等)

或者,您可以在操作系统层运行一些crontab或调度作业,并将结果存储在同一个存储中,比如数据库,或者只存储在静态文件(json、csv等)中

这是一个很好的python调度程序包,您可以使用它

但是,如果您想在后台监视任务状态,则需要使用芹菜或其他功能强大的异步工作者。有一些包可以监视您的任务,例如


如果您想简单地处理这个问题,只需在任务运行时编写一个状态为的文件,然后让django获取该文件以了解现在的状态。

芹菜是django生态系统中实现这一点最常用的方法。一种更简单、更黑客的方法是使用多处理模块生成后台任务。如果工作负载仅限于一台机器,则这可以正常工作。一旦您需要第二台机器,您将返回到任务/作业队列和分布式流:)