Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
如何在修改文件时重新启动虚拟机中的Django开发web服务器?_Django_Vagrant_Virtualbox_Pyinotify_Django Dev Server - Fatal编程技术网

如何在修改文件时重新启动虚拟机中的Django开发web服务器?

如何在修改文件时重新启动虚拟机中的Django开发web服务器?,django,vagrant,virtualbox,pyinotify,django-dev-server,Django,Vagrant,Virtualbox,Pyinotify,Django Dev Server,我有一台由流浪汉管理的VirtualBox机器。在这台机器上,我运行Django开发web服务器: ./manage.py runserver 0.0.0.0:8080 代码库很大,为了更快地重新加载代码,我安装了pyinotify。Django从1.7开始就支持它。我用的是1.7 代码库位于一个同步文件夹(NFS)中,我正在使用Sublime 3编辑主机(OS X)上的文件 但是,代码自动加载不起作用 如何在VM中重新启动开发服务器?我有一个基本的web服务器在开发服务器旁边运行。这个简单的

我有一台由流浪汉管理的VirtualBox机器。在这台机器上,我运行Django开发web服务器:

./manage.py runserver 0.0.0.0:8080
代码库很大,为了更快地重新加载代码,我安装了
pyinotify
。Django从1.7开始就支持它。我用的是1.7

代码库位于一个同步文件夹(NFS)中,我正在使用Sublime 3编辑主机(OS X)上的文件

但是,代码自动加载不起作用


如何在VM中重新启动开发服务器?

我有一个基本的web服务器在开发服务器旁边运行。这个简单的web服务器侦听一个请求(在不同的端口上),并接触项目的manage.py。这反过来会触发重新启动:

重新加载程序.py

#!/usr/bin/env python

import os
import logging
import SocketServer
from BaseHTTPServer import BaseHTTPRequestHandler

logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s %(message)s',
                    datefmt='%m/%d/%Y %I:%M:%S %p')

PORT = 9001
FILE_TO_TOUCH = '/path/to/myenv/manage.py'


def touch(fname, times=None):
    with open(fname, 'a'):
        os.utime(fname, times)


class HandleTouch(BaseHTTPRequestHandler):
    def do_GET(self):
        logging.info("Touching %s", FILE_TO_TOUCH)
        touch(FILE_TO_TOUCH)
        self.send_response(200)
        self.send_header("Content-Length", '0')
        self.end_headers()


httpd = SocketServer.TCPServer(("", PORT), HandleTouch)

logging.info("Server listening on port %s", PORT)

httpd.serve_forever()
在主机上,我使用一个简单的shell命令监视文件更改并点击重新加载程序的端点:

watcher.sh

#!/bin/sh
watchmedo shell-command -c 'curl http://192.168.10.10:9001' -R -i '/path/to/myenv/manage.py' -p '*.py' ./
其中
watchmedo
是来自的实用程序