我在 django 应用程序中有这些行。它们在正常条件下运行良好,但当我将它们称为 celery 任务时,似乎什么也没发生。我什至找不到报告的错误。谁能建议我哪里出错了?
cmd = "/path/to/unzipped_s3cmd/s3cmd get s3://%s %s/"
subprocess.call(cmd % (s3path,localpath), shell=True)
我在 django 用户下运行 celery 任务。
我在 django 应用程序中有这些行。它们在正常条件下运行良好,但当我将它们称为 celery 任务时,似乎什么也没发生。我什至找不到报告的错误。谁能建议我哪里出错了?
cmd = "/path/to/unzipped_s3cmd/s3cmd get s3://%s %s/"
subprocess.call(cmd % (s3path,localpath), shell=True)
我在 django 用户下运行 celery 任务。
这可能是因为模块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
我猜它必须与 s3cmd 的路径或用户权限有关。我刚刚使用 ubuntu 软件包存储库安装了 s3cmd,而不是进行本地解压缩,现在它可以很好地与 celery 配合使用。