1

我在 django 应用程序中有这些行。它们在正常条件下运行良好,但当我将它们称为 celery 任务时,似乎什么也没发生。我什至找不到报告的错误。谁能建议我哪里出错了?

cmd = "/path/to/unzipped_s3cmd/s3cmd get s3://%s %s/"
subprocess.call(cmd % (s3path,localpath), shell=True)

我在 django 用户下运行 celery 任务。

4

2 回答 2

0

这可能是因为模块subprocess没有导入到您的函数中。这意味着 celery 任务没有看到模块subprocess,因为该任务将运行到自己的进程/线程/greenlet 中。

例子:

@task
def some_function():
    import subprocess
    cmd = "/path/to/unzipped_s3cmd/s3cmd get s3://%s %s/"
    sp = subprocess.call(cmd % (s3path,localpath), shell=True)
    return sp.returncode
于 2013-07-07T20:30:55.203 回答
0

我猜它必须与 s3cmd 的路径或用户权限有关。我刚刚使用 ubuntu 软件包存储库安装了 s3cmd,而不是进行本地解压缩,现在它可以很好地与 celery 配合使用。

于 2013-07-08T09:10:27.190 回答