繁体   English   中英

Django 处理公共 API 使用(匿名用户调用 API)

[英]Django Handling Public API use (anonymouse users making calls to API)

我正在制作一个简单的网站,以 Django 作为后端。 理想情况下,您应该能够在不创建帐户的情况下使用它,然后任何人都可以看到您保存的所有项目(“笔记”)。

现在我已经在 Django 上创建了一个虚拟用户,每次匿名用户调用 API 来添加/删除/修改注释时,在 Django 方面它都会选择虚拟用户作为用户。

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

有没有办法在服务器端处理这种情况以防止服务器冻结?

正如索林在评论中回答的那样,我会将 go 转换为 Celery 方式。 基本上,您可以创建 model 来收集最后一个 Celery 任务运行时的数据 - 例如,如果它在过去 24 小时内没有运行,并且用户访问该网站,您可以通过异步方式再次运行任务。

您甚至不必为此使用 AJAX 调用,因为将任务发送到 Celery 足够快,可以在get_context_data()dispatch()方法上调用它。 你可以超载其他人,但这些是最快和最安全的覆盖。

希望回答对你有帮助

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM