【发布时间】:2012-02-20 19:52:57
【问题描述】:
我有一个网站,要求登录的管理员能够将暂存数据库推送到实时数据库。它做的第一件事是转储 sql 并推送到目标数据库。这工作正常,但是当我去同步包含上传材料的文件夹时,我得到一个错误。这只发生在从视图中调用脚本时,而不是从命令行或 python shell。这是函数:
def copy_media(self, origin_folder, target_folder):
command_string = "rsync -a %s %s" % (origin_folder, target_folder)
return_code = subprocess.call(command_string, shell=True)
return return_code
出错时返回码为“12”。我最好的猜测是,由于在脚本完成执行之前有相当长的延迟,因此视图不知道如何正确等待它结束。我的另一个猜测是路径以某种方式从视图中搞砸了。
【问题讨论】:
-
这可能是由于用户在文件上设置了身份验证吗?你可以试试 -o 选项。您是否在 rsync 上尝试了 -v 选项以查看是否发出任何警告?
-
我会尝试...关于从视图中调用 rsync 的最佳方式的任何想法?
-
除非你非常确定
origin_folder和target_folder,否则不要在生产中使用这段代码,否则你很容易被shell注入。
标签: python django rsync subprocess