2016-04-12 16 views
0

Python ile bir sunucu bileşeni geliştiriyorum. Sistem gereksinimlerini azaltma: MIN_CPU_COUNT, MIN_RAM

var mı

  • MIN_CPU_COUNT şey tanımlamak için bir yol (belki setup.py dosyası olarak)
  • MIN_RAM
  • ...:

    ben sistem gereksinimleri çivilemek istiyorum bunun gibi?

    Yazılımım en az N CPU ve M, RAM ihtiyacı var?

    Neden? Geçmişte sorun yaşadığımız için operatörler sunucu bileşenini daha az yetenekli bir sunucuya taşıdılar ve hizmet seviyesi anlaşmasını sağlayamadık.

+0

sen keyfi Python kodunu çalıştırabilir yana 'böyle denetimleri gerçekleştirmek mümkün olmalıdır setup.py' ([CPU] (http://stackoverflow.com/a/1006337/ 3005167), [RAM] (http://stackoverflow.com/a/22103295/3005167)) şartlar yerine getirilmemişse doğrudan orada bulunun ve kurtarın. Böyle bir işlevsellik dağıtılmış olup olmadığını bilmiyorum - sanırım, değil. – kazemakase

+0

@kazemakase Evet, check in setup.py dosyasında çalıştırabilirim. Ama ayrılmayı seviyorum: Programım kısıtları tanımlar ve bazı diğer kısımlar testten sorumludur. "Unittest" aklıma geliyor, ama işte bu bir aldatmaca değil, bir sistem testi. – guettli

cevap

1

Bu şekilde uygulandım.

Görüşleri karşılama

from django.conf import settings 
import psutil 
import humanfriendly 
from djangotools.utils import testutils 

class Check(testutils.Check): 

    @testutils.skip_if_not_prod 
    def test_min_cpu_count(self): 
     min_cpu_count=getattr(settings, 'MIN_CPU_COUNT', None) 
     self.assertIsNotNone(min_cpu_count, 'settings.MIN_CPU_COUNT not set. Please supply a value.') 
     self.assertLessEqual(min_cpu_count, psutil.cpu_count()) 

    @testutils.skip_if_not_prod 
    def test_min_physical_memory(self): 
     min_physical_memory_orig=getattr(settings, 'MIN_PHYSICAL_MEMORY', None) 
     self.assertIsNotNone(min_physical_memory_orig, "settings.MIN_PHYSICAL_MEMORY not set. Please supply a value. Example: MIN_PHYSICAL_MEMORY='4G'") 
     min_physical_memory_bytes=humanfriendly.parse_size(min_physical_memory_orig) 
     self.longMessage=False 
     self.assertLessEqual(min_physical_memory_bytes, psutil.virtual_memory().total, 'settings.MIN_PHYSICAL_MEMORY=%r is not satisfied. Total virtual memory of current hardware: %r' % (
      min_physical_memory_orig, humanfriendly.format_size(psutil.virtual_memory().total)))