Changeset 1004 in main


Ignore:
Timestamp:
04/12/12 12:16:08 (10 years ago)
Author:
pcosquer
Message:

thumbnailers: set the task time limit to 60 seconds

Location:
trunk/openPLM/plmapp/thumbnailers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/thumbnailers/__init__.py

    r701 r1004  
    2020from celery.task import task 
    2121 
    22 @task(ignore_result=True) 
     22@task(ignore_result=True, soft_time_limit=60, time_limit=65) 
    2323def generate_thumbnail(doc_file_id): 
    2424    """ 
  • trunk/openPLM/plmapp/thumbnailers/magickthumbnailer.py

    r701 r1004  
    11import subprocess 
    22 
     3import sys 
     4mswindows = (sys.platform == "win32") 
     5 
    36from base import ThumbnailersManager 
     7 
     8def limit_resources(): 
     9    """ 
     10    Limit the process execution time to 60 seconds. 
     11    """ 
     12    try: 
     13        from resource import getrlimit, setrlimit, RLIMIT_CPU 
     14    except ImportError: 
     15        return 
     16    else: 
     17        def _setrlimit(key, value): 
     18            try: 
     19                soft, hard = getrlimit(key) 
     20                # Change soft limit 
     21                if hard != -1: 
     22                    soft = min(value, hard) 
     23                else: 
     24                    soft = value 
     25            except ValueError: 
     26                hard = -1 
     27            setrlimit(key, (soft, hard)) 
     28        _setrlimit(RLIMIT_CPU, 60) 
     29 
    430 
    531def magick_thumbnailer(input_path, original_filename, output_path): 
     
    834    a thumbnail. 
    935    """ 
     36    if mswindows: 
     37        preexec_fn = None 
     38    else: 
     39        preexec_fn = limit_resources 
     40 
    1041    args = ["convert", "-format", "png", 
    1142            "-thumbnail", "%dx%d" % ThumbnailersManager.THUMBNAIL_SIZE, 
    1243            u"%s[0]" % input_path, output_path] 
    13     subprocess.check_call(args) 
     44    subprocess.check_call(args, preexec_fn=preexec_fn) 
    1445    return False 
    1546 
Note: See TracChangeset for help on using the changeset viewer.