2010-12-29 8 views
1

из celery.decorators импорта задачиПочему мой код Python не работает?

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 

Как вы можете видеть, функция работает. Однако файл не создает. Почему?

Я попытался изменить несколько путей к файлу из-за возможных проблем с разрешением. но не повезло.

+0

Откуда вы знаете, что это не работает? Что делать, если вы используете абсолютный путь вместо относительного? – Gabe

ответ

2

Если файл не был записан, вы получите исключение, поэтому функция не может завершиться.

Поскольку функция возвращает 8, следует, что файл где-то записывается.

Возможно, файл записывается в другой каталог на тот, который вы ожидаете

Единственная другая возможность, я могу думать о том, что функция добавить, что в настоящее время пробег не один, что вы показали здесь

+0

Вы можете использовать 'import os; os.getcwd() ', чтобы узнать, к какому директорию относится Python. Это часто устанавливается на что-то очень неудобное; если я запустил Python из своего меню «Пуск», это будет 'C: \\ Windows \\ system32'! Если я запустил его из командного окна, это будет тот путь, который был в командном окне, когда я запустил Python. –

1

Я думаю, проблема в том, что вы запускаете это, импортируя модуль. . в пути к файлу относится к тому месту, где живет модуль, а не к текущему рабочему каталогу. Попробуйте дать ему полное имя пути.

Если это не сработает, покажите нам, где именно вы запускаете скрипт, и ls -la в этом каталоге. И если это еще не показывает ничего ненормального. Сделайте

find/-name abc.txt

1
  1. рабочий каталог не может быть один вы ожидаете.
  2. Задача может быть выполнена на другом хосте, если вы используете несколько хостов.
Смежные вопросы