关于Django线程安全性的问题

2024-06-11 06:00:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django应用程序,用于管理调查的注册。在

有固定数量的插槽,我想“保留”的插槽用户时,他们注册。 在我的一个视图中,我获取下一个可用的插槽并保留它(如果没有可用的插槽,则重定向用户)

我想防止两个用户同时注册到同一个槽位的情况,因为方法“get_next_available_slot”为两个用户返回了相同的槽位。在

为此,我尝试用Django的视图来理解进程和线程的使用。在

1)每个请求是在单独的线程中处理的吗?使用python线程模块的LOCK()是否会负责独占访问?在

2)我用modwsgi在RHEL上运行apache。如何配置Apache/modwsgi以确保有一个更简单、更简单的解决方案来处理上述情况?在

我根本不指望web应用程序会有巨大的负载。我想要一个更简单的解决方案,而不是一个高性能的解决方案。在


Tags: django方法用户视图应用程序get数量情况
2条回答

您不应该假设django应用程序的线程/进程设置,因为它取决于您使用的web服务器以及django是如何与之集成的。因此,进程间通信方法不应该依赖这些细节来保证可靠性。一个好的解决方案是为锁和共享数据使用内置的缓存库。在

这里有一个good example的缓存锁,确保一次只运行一次celery任务实例。您也可以将其应用于常规请求。在

你不应该担心这种事。在

这些插槽存储在数据库中,对吗?数据库应该为您处理所有的锁定机制,只要确保您在事务下运行所有东西,您就可以了。在

相关问题 更多 >