【问题标题】:How come my Python code doesn't work?为什么我的 Python 代码不起作用?
【发布时间】:2011-05-31 21:13:15
【问题描述】:

从 celery.decorators 导入任务

from celery.decorators import task
@task()
def add(x, y):
    r = open("./abc.txt","w")
    r.write("sdf")
    r.close()
    return x + y

这是我的 tasks.py 文件。

>>> import tasks
>>> r = tasks.add.delay(3,5)
>>> r.result
8

如您所见,该功能有效。但是,文件不会创建。 为什么?

由于可能存在权限问题,我已尝试更改多个文件路径。但没有运气。

【问题讨论】:

  • 你怎么知道它不起作用?如果你使用绝对路径而不是相对路径呢?

标签: python django file rabbitmq celery


【解决方案1】:

如果文件没有被写入,你会得到一个异常,所以函数不可能完成。

由于函数返回 8,因此文件正在写入某处。

也许该文件与您期望的目录不同

我能想到的唯一另一种可能性是正在运行的 add 函数不是您在此处显示的那个

【讨论】:

  • 您可以使用import os; os.getcwd() 找出Python 认为. 所指的目录。这通常设置为非常不方便的东西;如果我从“开始”菜单启动 Python,它将是 C:\\Windows\\system32 !如果我从命令窗口启动它,它将是我启动 Python 时命令窗口中的任何路径。
【解决方案2】:

我认为问题在于您通过导入模块来运行它。文件路径中的. 是相对于模块所在的位置,而不是您当前的工作目录。尝试给它一个完整的路径名。

如果这不起作用,请告诉我们您运行脚本的确切位置以及该目录上的ls -la。如果那仍然没有显示出任何异常。做一个

find / -name abc.txt

【讨论】:

    【解决方案3】:
    1. 工作目录可能不是您所期望的。
    2. 如果您使用多台主机,该任务可能会在另一台主机上完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-19
      • 2014-01-23
      • 2013-08-06
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      相关资源
      最近更新 更多