Django Handling Public API use(匿名用户调用API)



我正在制作一个以Django为后台的简单网站。理想情况下,你应该能够在不创建帐户的情况下使用它,然后你在其中保存的所有项目("注释"(都会对任何人可见。

现在,我在Django上创建了一个伪用户,每次匿名用户调用API添加/删除/修改注释时,Django会选择伪用户作为用户。

它会正常工作(我认为(,但Django的一个API可能需要很长的时间来运行(大约1-2分钟(。这意味着,如果多人试图在匿名的情况下进行API调用,那么在某个时刻,服务器将冻结,直到长时间的API完成运行。

有没有办法将此类案件移交给服务器端,以防止服务器冻结?

正如Sorin在评论中所回答的那样,我会采用Celery的方式。基本上,您可以创建一个模型来收集上次运行Celery任务时的数据,例如,如果它在过去24小时后没有运行,并且用户访问了网站,您可以通过异步方式再次运行任务。

您甚至不必为此使用AJAX调用,因为向Celery发送任务的速度足够快,可以在get_context_data()dispatch()方法上调用它。你可以让其他人超负荷,但这些是最快、最安全的超负荷。

您提到您的一个API端点执行的任务需要很长时间,这意味着您已经有一个任务或进程可以阻止http请求响应循环。您可以使用芹菜或其他任务队列异步运行耗时(或长时间运行(的任务。

最新更新