当前位置: 首页 > 知识库问答 >
问题:

python看门狗模块不能与redhat服务器下的django/mod_wsgi一起工作

裘光启
2023-03-14

我们使用django(1.7.5)mod_wsgi在redhat服务器的apache2下,并尝试使用watchdog来监控文件。

它在本地使用pythonmanager.pyrunserver命令运行良好,而当我将其部署到产品环境时,事件不会在wsgi模式下触发

# wsgi.py
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

LOGGER.debug("Starting to watch for config file changes.")
fw = FileWatcher()
# filewatcher
path = settings.PROJECT_ROOT
filename = 'config.json'
class ConfigHandler(FileSystemEventHandler):
    def on_modified(self, event):
        if not event.is_directory and event.src_path.endswith(filename):
            LOGGER.debug("The config has changed!, Reloading")

class FileWatcher(object):

    _instance = None
    _watching = False

    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            LOGGER.debug("Creating new FileWatcher")
            cls._instance = super(FileWatcher, cls).__new__(cls, *args, **kwargs)

            cls.start_watching()

        return cls._instance

    @classmethod
    def start_watching(cls):
        if not cls._watching:
            LOGGER.debug("Starting to monitor the file: %s",
                        os.path.join(path, filename))
            event_handler = ConfigHandler()
            observer = Observer()
            observer.schedule(event_handler, path=path, recursive=False)
            observer.start()

            cls._watching = True

共有1个答案

孙翰墨
2023-03-14

找到路由原因,默认的观察者(inotify.InotifyObserver)在具有旧linux内核的旧redhat服务器中不工作

它在http://pythonhosted.org/watchdog/api.html#module-watchdog.observers

inotify.InotifyObserver Linux 2.6.13+   inotify(7) based observer
polling.PollingObserver Any fallback implementation

所以我把它改成了通用的

    from watchdog.observers.polling import PollingObserver
    # http://pythonhosted.org/watchdog/api.html#module-watchdog.observers
    observer = PollingObserver()
 类似资料:
  • 我正在使用mod_wsgi在apache2上部署一个django项目,但问题是服务器不提供页面,并且在给出错误之前挂起10分钟: 这是我的: 设置。派克 wsgi。派克 项目结构 在arTfact_网站/URL中。派克 在网站/urls.py 我做错什么了吗?

  • 我读了很多文章,但仍然不知道我遗漏了什么。我正在运行一个来自virtualenv的django网站。这是我的配置文件。网站地址被替换为 配置 这是我的WSGI。py文件,没有任何更改,以前从未更改过 Python版本 我的virtualenv python版本是3.9。5默认的Google VM python版本是3.6。9 Python安装库 我安装了apache modwsgi以及 错误日志文

  • 我试图将zookeeper和kafka设置为共享名称空间中单独的Kubernetes部署/吊舱。我已经在我的Ubuntu沙盒上通过kubeadm用Calico引导了一个本地K8s 1.8... 所以我假设我的集群中有一个普通的网络问题,然后我注意到一些更让我困惑的事情...如果我将zookeeper.connect设置为10.107.41.148:2181(zookeeper服务的当前地址),连接

  • 我在控制台上得到这个JS错误: app.js:167未捕获的引用错误:未定义接收器ID 这是我的完整代码: 私家车控制员: PrivateMessageEvent: Bootstrap.js 频道。php 拉威尔回声服务器。json 在后台队列中:work和laravel echo服务器已在运行 触发该事件后,我在laravel echo服务器控制台上收到以下消息: 笔记: > 我成功地收听了公共

  • 我想使用NetBeans的Swing GUI构建器以及Maven项目和java模块。似乎GUI构建器找不到编译的类,如果它们是作为java模块的一部分编译的。它给出了错误“加载组件(...)中的错误不能加载组件类(...)”(参见示例末尾截图中的整个错误) 我把它归结为一个最小的例子,使用Netbeans 11: > 文件>New Project>Java with Maven>Java Appl

  • 问题内容: 在我编写的flask应用程序中,我使用了一个外部库,该库可以使用环境变量进行配置。注意:我自己编写了这个外部库。因此,如有必要,我可以进行更改。从命令行运行时,运行带有以下内容的烧瓶服务器: 一切都如预期。但将它部署到Apache后,用它不工作了。事实上,打印出到(所以它在Apache日志中显示出来显示,该wsgi过程似乎是在一个非常不同的环境(一个,好像是这样了。其实,它指向我的发展