Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django';s内置web服务器:使用和可靠性问题_Python_Django_Orm_Ubuntu - Fatal编程技术网

Python Django';s内置web服务器:使用和可靠性问题

Python Django';s内置web服务器:使用和可靠性问题,python,django,orm,ubuntu,Python,Django,Orm,Ubuntu,简短问题1 什么构成了一个大约1/2定义的生产环境 简短问题2 如果多人同时访问数据库,是否有记录在案的管理界面损坏数据库的案例 背景 我已经使用Django作为PostgreSQL服务器的一个接口。由于该应用程序的主要用途是ORM,因此它在客户端计算机上运行,以便与远程服务器通信。到目前为止,为了访问管理web界面,我运行了python manage.py runserver,它在我的本地主机(127.0.0.1:8000)上托管了一个小型web服务器来访问它 这种方法已经奏效了,除了每当我需

简短问题1
什么构成了一个大约1/2定义的生产环境

简短问题2
如果多人同时访问数据库,是否有记录在案的管理界面损坏数据库的案例

背景
我已经使用Django作为PostgreSQL服务器的一个接口。由于该应用程序的主要用途是ORM,因此它在客户端计算机上运行,以便与远程服务器通信。到目前为止,为了访问管理web界面,我运行了
python manage.py runserver
,它在我的本地主机(127.0.0.1:8000)上托管了一个小型web服务器来访问它

这种方法已经奏效了,除了每当我需要修复数据条目或查找某些内容时,我都必须在安装/运行应用程序的机器上。我的修复方法是从Ubuntu服务器启动应用程序的管理界面,并给它一个真正的IP地址。请注意,真正的IP地址位于本地intranet上,位于防火墙后面。我和两个人测试了同步访问,没有发现任何错误,我通过Ubuntu的Upstart将这个python进程作为一个系统进程添加


长期目标是安装Apache和Mod_WSGI来托管应用程序。然而,对于这样一个小团队(在任何给定时间都有3人),是否有必要经历这些麻烦?请注意,如果我们曾经向外界开放过,这个问题将变得毫无意义,Apache是必须的

您是说,django的两个独立实例在同一个数据库上运行会导致损坏吗?如果是这样的话,我可以肯定地看到数据损坏的可能性,因为Django的ORMAPI和FormsAPI并不是以这种方式分发的


至于“生产”服务器的定义。我的理解是,dev服务器不是为可靠性、可用性、安全性或质量而设计的。例如,它一次只能服务一个请求。话虽如此,每个用例都定义了自己的一组需求,这些需求定义了一个生产环境。我认为“生产”是为了满足我的需求,不满足亚马逊的生产定义:(

< P>)如果你不使用Developo服务器来开发Django项目,听起来就像是生产给我。使用Apache和mod WSGI部署应用程序是否值得这么麻烦?这取决于您,但是Django开发人员的建议非常明确

请勿在生产设置中使用此服务器。它没有经过安全审计或性能测试。(我们的业务是制作Web框架,而不是Web服务器,因此改进此服务器以处理生产环境超出了Django的范围。)

关于你的第二个问题,我不知道你所说的“腐败”是什么意思。如果两个用户同时更改同一对象,则要保存的第二个用户可能会无意中恢复第一个用户的更改:

考虑两个用户编辑同一个人。第一个用户更改第一个名称,然后第二个用户更改第二个名称。因为第二个用户在第一个用户保存之前加载了更改页面,所以第一个用户的名字会更改回Joe

| Description   | First Name | Second Name  |
=============================================
| initial value | Joe        | Smith        |
| first user    | Joseph     | Smith        |
| second user   | Joe        | Bloggs       |
=============================================

大多数生产部署都是多进程的,因此您将有多个Django实例访问同一个数据库。这应该没有问题。由于SQLite处理数据库锁定的方式,在多个进程的高并发负载下,只有SQLite可能会出现问题。即便如此,这也不应该导致损坏。是的,但编写应用程序时必须牢记这一点,特别是当它们更改数据和缓存更改时。我的观点是,在编写管理应用程序时没有考虑到这一要求。