Django中的文件写入一直存在IOError
我正在本地运行我的应用程序,在从数据库创建文件的过程中,我当前有一个IOR错误。我使用Django 1.10、MongoDB作为我的数据库,芹菜4.0.2作为我的后台任务。问题出现在tasks.py中,因为我在那里访问数据库,然后将其存储在django子文件夹“analysis_samples”中 以下是回溯:Django中的文件写入一直存在IOError,django,file-writing,celery-task,Django,File Writing,Celery Task,我正在本地运行我的应用程序,在从数据库创建文件的过程中,我当前有一个IOR错误。我使用Django 1.10、MongoDB作为我的数据库,芹菜4.0.2作为我的后台任务。问题出现在tasks.py中,因为我在那里访问数据库,然后将其存储在django子文件夹“analysis_samples”中 以下是回溯: [2017-04-15 15:31:08,798: ERROR/PoolWorker-2] Task tasks.process_sample_input[0619194e-4300-4
[2017-04-15 15:31:08,798: ERROR/PoolWorker-2] Task tasks.process_sample_input[0619194e-4300-4a1d-91b0-20766e048c4a] raised unexpected: IOError(2, 'No such file or directory')
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/celery/app/trace.py", line 367, in trace_task
R = retval = fun(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/celery/app/trace.py", line 622, in __protected_call__
return self.run(*args, **kwargs)
File "/home/user/django_apps/myapp/analysis/tasks.py", line 218, in process_sample_input
with open(sample_file_path, "w+") as f:
IOError: [Errno 2] No such file or directory: u'/home/user/django_apps/myapp/myapp/analysis_samples/58f1cc3c45015d127c3d68c1'
下面是tasks.py的片段:
from django.core.files import File
sys.path.append(settings.ANALYSIS_SAMPLES)
import base64
import os, sys
@shared_task(name='tasks.process_sample_input')
def process_sample_input(instance_id):
instance = Sample.objects.get(pk=instance_id)
#many code here..
try:
conn=pymongo.MongoClient(settings.MONGO_HOST, settings.MONGO_PORT)
db = conn.thugfs #connect to GridFS db of thug
thugfs_db = GridFS(db)
except pymongo.errors.ConnectionFailure, e:
logger.error("Could not connect to ThugFS MongoDB: %s" % e)
sample_file_folder = settings.ANALYSIS_SAMPLES
for sample_fs_id in sample_fs_ids:
sample_file = thugfs_db.get(ObjectId(sample_fs_id)).read()
sample_file = base64.b64decode(sample_file) #decode file from database
sample_file_path = os.path.join(sample_file_folder, sample_fs_id)
with open(sample_file_path, "w+") as f:
fileOut = File(f)
fileOut.write(sample_file)
settings.py:
ANALYSIS_SAMPLES = os.path.join(BASE_DIR, 'myapp/analysis_samples')
有人能看到导致错误的原因吗?任何帮助都将不胜感激 在错误跟踪中,我注意到包含…/myapp/myapp/…的路径。。。可能实际路径只有1个myapp/文件夹?在这种情况下,更改分析样本设置myapp/myapp是同样可以找到settings.py的文件夹。好的,我会检查是否移除它。谢谢。我已经看到错误了!在tasks.py中,我也有一个子流程,我错放了一个arg——要处理的目标。现在没事了,不再出现了。应该将目标放在args的最后一部分,而不是中间。