我使用迷航器和virtualbox建立了一个虚拟环境。
虚拟环境使用的是ubuntu14.04生产操作系统。
我希望有多个django应用程序使用这个相同的虚拟机设置。
我所期望的
每当我使用我最喜欢的编辑器(如Vim或崇高)在我的macbook上编辑任何python文件或html时,只要我在浏览器上(也在我的macbook中)按刷新键,就会立即进行更改。
django应用程序是通过url (如http://djangoapp1 )来实现的。其他应用程序可以是http://djangoapp2等
所有这些urls实际上都指向同一台迷途机器。
当我想编辑数据库( postgres )时,我只需要在我的macbook中运行valentina工作室,它就会连接到运行在虚拟机中的postgres数据库。
到底发生了什么,
我花了很多时间让多个django应用程序使用nginx和uwsgi在同一台机器上工作。
然后我意识到,每当我做出改变,变化都不会立即反映出来。我需要向uwsgi进程添加一个-触摸-重新加载,它现在开始使用upstart。
即使当我添加-触摸-重新加载时,每当我想要反映我的代码更改时,我仍然必须故意去“触摸”一个文件。
即使这样做了,改变也不会因为某种原因而出现。只有当我做了一个适当的vagrant halt
,然后做了vagrant up
,它才会出现。Vagrant reload
会导致整个应用程序崩溃。
只有当我使用本机manage.py runserver
时,才能使代码更改>刷新网页>查看更改周期
但这意味着我在开发过程中很难在应用程序之间切换。我必须关闭一个,然后再启动另一个。
如果我同样使用CakePHP或任何类型的PHP框架在同一个虚拟机中构建多个应用程序,我可以让make代码更改>刷新页>参见更改开发周期。
如何在使用我的家庭操作系统编写代码的同时,在同一虚拟机中实现多个Django应用程序的相同易用性?
发布于 2016-08-10 03:28:09
下面的代码段将使用Django的自动重新加载程序来检测代码更改,并在必要时将代码钩入uWSGI以重新加载代码:
import uwsgi
from uwsgidecorators import timer
from django.utils import autoreload
@timer(3)
def change_code_gracefull_reload(sig):
if autoreload.code_changed():
uwsgi.reload()
您可以将此代码放在wsgi.py
文件中的get_wsgi_application()
之前。装饰器将注册uWSGI每3秒运行一次的函数。
(原始源)
发布于 2016-08-09 12:00:02
-触摸-重新装填
正如我所知,这个arg用于特定的配置.ini
文件。请尝试使用选项--py-autoreload 1
。
在开发阶段,我认为您可以直接将Nginx代理用于默认的runserver
或runserver_plus
(请检查django-extensions
)。
https://stackoverflow.com/questions/32390442
复制相似问题