0

我想使用 pyinotify 来观察文件系统的变化。如果文件已更改,我想相应地更新我的数据库文件(重新读取标签,其他信息......)

我将以下代码放入我的应用程序的signals.py

import pyinotify
....

# create filesystem watcher in seperate thread
wm       = pyinotify.WatchManager()
notifier = pyinotify.ThreadedNotifier(wm, ProcessInotifyEvent())
# notifier.setDaemon(True)
notifier.start()
mask     = pyinotify.IN_CLOSE_WRITE | pyinotify.IN_CREATE | pyinotify.IN_MOVED_TO | pyinotify.IN_MOVED_FROM
dbgprint("Adding path to WatchManager:", settings.MUSIC_PATH)
wdd      = wm.add_watch(settings.MUSIC_PATH, mask, rec=True, auto_add=True)

def connect_all():
    """
    to be called from models.py
    """
    rescan_start.connect(rescan_start_callback)
    upload_done.connect(upload_done_callback)
....

当 django 使用 ''./manage.py runserver'' 运行时,这非常有用。但是,当作为 ''./manage.py runfcgi'' 运行时,django 不会启动。没有错误消息,它只是挂起并且不会守护进程,可能在“notifier.start()”行。

当我运行“。

当 django 作为 fcgi 运行时,与 django 一起启动无限线程的正确方法是什么?甚至可能吗?

4

1 回答 1

0

嗯,呃。除了 django 之外,永远不要开始一个自己的、无穷无尽的线程。我使用 celery,运行这样的线程会更好一些。

于 2012-08-16T18:23:14.740 回答