Merge pull request #57 from Koed00/dev

#56 cpu_affinity not supported on some platforms
This commit is contained in:
Ilan Steemers
2015-09-09 14:24:58 +02:00
3 changed files with 9 additions and 2 deletions
+6 -1
View File
@@ -431,7 +431,7 @@ def scheduler(broker=None):
# get args, kwargs and hook
if s.kwargs:
try:
# eval should be safe here cause dict()
# eval should be safe here because dict()
kwargs = eval('dict({})'.format(s.kwargs))
except SyntaxError:
kwargs = {}
@@ -499,7 +499,12 @@ def set_cpu_affinity(n, process_ids, actual=not Conf.TESTING):
"""
# check if we have the psutil module
if not psutil:
logger.warning('Skipping cpu affinity because psutil was not found.')
return
# check if the platform supports cpu_affinity
if actual and not hasattr(psutil.Process(process_ids[0]), 'cpu_affinity'):
logger.warning('Faking cpu affinity because it is not supported on this platform')
actual = False
# get the available processors
cpu_list = list(range(psutil.cpu_count()))
# affinities of 0 or gte cpu_count, equals to no affinity
+2
View File
@@ -270,6 +270,8 @@ As a rule of thumb; cpu_affinity 1 favors repetitive short running tasks, while
The ``cpu_affinity`` setting requires the optional :ref:`psutil <psutil>` module.
*Psutil does not support cpu affinity on OS X at this time.*
.. py:module:: django_q
.. rubric:: Footnotes
+1 -1
View File
@@ -137,7 +137,7 @@ In this example the user requests a report and we let the cluster do the generat
task.result)
The hook is practical here, cause it allows us to detach the sending task from the report generation function and to report on possible failures.
The hook is practical here, because it allows us to detach the sending task from the report generation function and to report on possible failures.
Haystack
========