换句话说,你正在重新创建一个任务队列?
也就是说,接口只是插入代表“为我做这件事”的记录,并且稍后从“为您完成”表格(或同一张表格,无所谓)中检索结果?
你真正想要的是某种远程异步rpc调用接口,如果你愿意,你可以用这种方式重建。
我仍然会推荐重新评估芹菜 - 我已经把它关闭了好几次,但现在我已经把它设置了让我感到震惊,我之前没有使用它。你甚至可以使用Django数据库作为消息队列后端(尽管我只是说为低容量网站做这件事)。
不管怎样,至于具体的问题:
有两个独立的过程中使用相同的数据库表既不Django的也不是你的数据库连接器将在这方面增加额外的限制没有继承的问题。
您将需要您的工作进程(“解决”)定期轮询数据库以查找要执行的任务,或向其发送消息(提示:芹菜!)。您的用户界面客户端(“界面”)可以在用户刷新时检查数据库。
从实现的角度来看,它可能最简单的方式是在两个项目中完全共享代码(所有模型,视图等)。你会有一个进程以正常的方式启动ui web服务器,而对于worker来说,连接一个自定义管理命令可能是启动你的worker循环的最简单的方法。
如果您打算写入行时未使用select_for_update,那么您可能会遇到数据库锁定/争用条件的一些问题。或者,您可以使用.save(update_fields=zzz)来避免争用,但只有1.5。
它真的让我误以为django-db可以作为队列使用。谢谢! – sdkfasldf