浏览代码

Speed up the precedence state lookup

Matt Robenolt 11 年之前
父节点
当前提交
fc93c24946
共有 1 个文件被更改,包括 7 次插入3 次删除
  1. 7 3
      celery/states.py

+ 7 - 3
celery/states.py

@@ -71,6 +71,10 @@ PRECEDENCE = ['SUCCESS',
               'RETRY',
               'RETRY',
               'PENDING']
               'PENDING']
 
 
+#: Hash lookup of PRECEDENCE to index
+PRECEDENCE_LOOKUP = dict(zip(PRECEDENCE, range(0, len(PRECEDENCE))))
+NONE_PRECEDENCE = PRECEDENCE_LOOKUP[None]
+
 
 
 def precedence(state):
 def precedence(state):
     """Get the precedence index for state.
     """Get the precedence index for state.
@@ -79,9 +83,9 @@ def precedence(state):
 
 
     """
     """
     try:
     try:
-        return PRECEDENCE.index(state)
-    except ValueError:
-        return PRECEDENCE.index(None)
+        return PRECEDENCE_LOOKUP[state]
+    except KeyError:
+        return NONE_PRECEDENCE
 
 
 
 
 class state(str):
 class state(str):