【问题标题】:Calling s3cmd with django-celery用 django-celery 调用 s3cmd
【发布时间】:2013-07-05 02:39:39
【问题描述】:

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

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

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

【问题讨论】:

标签: django subprocess celery s3cmd


【解决方案1】:

这可能是因为模块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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 2013-10-14
      • 2011-06-19
      • 2018-05-03
      • 2019-07-02
      • 2021-07-05
      相关资源
      最近更新 更多