Forráskód Böngészése

pool_restart command supports custom reloader

Mher Movsisyan 13 éve
szülő
commit
927f024221
1 módosított fájl, 9 hozzáadás és 12 törlés
  1. 9 12
      celery/worker/control.py

+ 9 - 12
celery/worker/control.py

@@ -239,20 +239,17 @@ def pool_shrink(panel, n=1, **kwargs):
 
 
 @Panel.register
-def pool_restart(panel, imports=[], reload_imports=False, **kwargs):
-    imports = set(imports)
-    celery_imports = set(panel.app.conf.CELERY_IMPORTS)
-    for m in imports - celery_imports:
-        panel.app.loader.import_from_cwd(m)
-        panel.logger.debug("imported %s module" % m)
-    if reload_imports:
-        for m in celery_imports:
-            reload(sys.modules[m])
-            panel.logger.debug("reloaded %s module" % m)
-    else:
-        for m in imports & celery_imports:
+def pool_restart(panel, imports=None, reload_imports=False,
+                 reload=reload, **kwargs):
+    imports = set(imports or [])
+    for m in imports:
+        if m not in sys.modules:
+            panel.app.loader.import_from_cwd(m)
+            panel.logger.debug("imported %s module" % m)
+        elif reload_imports:
             reload(sys.modules[m])
             panel.logger.debug("reloaded %s module" % m)
+
     panel.consumer.pool.restart()
     return {"ok": "started restarting worker processes"}