Я использую Сельдерей с Ткань. Моя сельдерей задача копирует файл на моей локальной машине Как это:Функция Django-Execute после завершения работы с сельдерей
@app.task
def copytolocal():
get('/home/remote/file.txt','/home/local/') # Copying to local dir
Когда в представлении я пытаюсь открыть и прочитать файл я получаю IOError
, потому что задача еще не завершена
taskfile.app.send_task('taskfile.copytolocal',[]) # Sending task to queue
open('/home/local/file.txt') #IOError because task isnt completed yet
Если я использую что-то вроде asyncresult.ready()
, то он возвращается False
на казнь исполнения. Есть ли способ реализовать что-то вроде обратного вызова или иначе и как это сделать.
Хорошо, что не ясно, что вы хотите сделать - что должно произойти в представлении, если файл не готов? вы хотите заставить клиента ждать? или вы хотите отобразить сообщение пользователю о том, что файл еще не готов? Лично я бы предложил использовать немного магии AJAX, чтобы отобразить местозаполнитель на странице, пока файл не будет готов, а затем загрузите обновление. – scytale
его обычно получает файл (с удаленного сервера) -> читать файл -> записывать содержимое в db. Моя проблема в том, что я хочу, чтобы код чтения файла должен был быть выполнен после завершения работы с сельдереем. В любом случае AJAX был бы подходящим Спасибо – Yudi