Python Wand 生成了许多临时文件

10
我们在Celery下使用Python Wand处理许多图片。 在我们的一些服务器上,我们的处理有时会留下很多临时文件,例如: $ ls -lh /tmp/ -rw ------- 1 ubuntu ubuntu 1.9M Apr 1 04:35 magick-y1yKKiVZ -rw ------- 1 ubuntu ubuntu 1.9M Apr 1 04:41 magick-Y22P6McK -rw ------- 1 ubuntu ubuntu 1.9M Apr 1 04:37 magick-YaaSIYrk -rw ------- 1 ubuntu ubuntu 1.9M Apr 1 04:39 magick-YEkn4H15 -rw ------- 1 ubuntu ubuntu 1.9M Apr 1 04:39 magick-yf2Vrfwi -rw ------- 1 ubuntu ubuntu 1.9M Apr 1 04:38 magick-YIYTaArn -rw ------- 1 ubuntu ubuntu 199K Apr 1 04:43 magick-YLM5wYm9 -rw ------- 1 ubuntu ubuntu 199K Apr 1 04:43 magick-YLo5SeVp [...]
是否有一种方法可以使Wand在处理完文件后进行清理? 如果这是预期的行为,请问如何调试并知道哪个图像创建了哪个临时文件,例如通过添加日志语句等方式?
谢谢

3
这不是期望的行为,是由ImageMagick执行的,而不是Wand。 - minhee
1个回答

2

简单方法:在您的环境设置中指定MAGICK_TMPDIR=/home/somewhere,并在您的crontab中使用rm magick-*删除该文件夹。

困难方法:在编译ImageMagick之前应用此路径:

--- pristine/imagemagick-6.5.7.8/magick/resource.c 2009-10-26 16:52:10.000000000 +0300
+++ libm/imagemagick-6.5.7.8/magick/resource.c 2010-09-28 19:18:39.000000000 +0400
@@ -329,6 +329,7 @@
 static void *DestroyTemporaryResources(void *temporary_resource)
 {
   (void) remove((char *) temporary_resource);
+ RelinquishMagickMemory(temporary_resource);
   return((void *) NULL);
 }

@@ -474,10 +475,10 @@
   (void) LockSemaphoreInfo(resource_semaphore);
   if (temporary_resources == (SplayTreeInfo *) NULL)
     temporary_resources=NewSplayTree(CompareSplayTreeString,
- RelinquishMagickMemory,DestroyTemporaryResources);
+ DestroyTemporaryResources, NULL);
   (void) UnlockSemaphoreInfo(resource_semaphore);
   resource=ConstantString(path);
- (void) AddValueToSplayTree(temporary_resources,resource,resource);
+ (void) AddValueToSplayTree(temporary_resources,resource,NULL);
   return(file);
 }

嗨,Farsheed,我该怎么做?谢谢 - Marcelo Gazzola

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接