setting.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from environs import Env
  2. from proxypool.utils import parse_redis_connection_string
  3. env = Env()
  4. env.read_env()
  5. # definition of environments
  6. DEV_MODE, TEST_MODE, PROD_MODE = 'dev', 'test', 'prod'
  7. APP_ENV = env.str('APP_ENV', DEV_MODE).lower()
  8. APP_DEBUG = env.bool('APP_DEBUG', True if APP_ENV == DEV_MODE else False)
  9. APP_DEV = IS_DEV = APP_ENV == DEV_MODE
  10. APP_PROD = IS_PROD = APP_DEV == PROD_MODE
  11. APP_TEST = IS_TEST = APP_ENV = TEST_MODE
  12. # redis host
  13. REDIS_HOST = env.str('REDIS_HOST', '127.0.0.1')
  14. # redis port
  15. REDIS_PORT = env.int('REDIS_PORT', 6379)
  16. # redis password, if no password, set it to None
  17. REDIS_PASSWORD = env.str('REDIS_PASSWORD', None)
  18. # redis connection string, like redis://[password]@host:port or rediss://[password]@host:port
  19. # REDIS_CONNECTION_STRING = env.str('REDIS_CONNECTION_STRING', None)
  20. # if REDIS_CONNECTION_STRING:
  21. # REDIS_HOST, REDIS_PORT, REDIS_PASSWORD = parse_redis_connection_string(REDIS_CONNECTION_STRING)
  22. # redis hash table key name
  23. REDIS_KEY = env.str('REDIS_HOST', 'proxies')
  24. # definition of proxy scores
  25. PROXY_SCORE_MAX = 100
  26. PROXY_SCORE_MIN = 0
  27. PROXY_SCORE_INIT = 10
  28. # definition of proxy number
  29. PROXY_NUMBER_MAX = 50000
  30. PROXY_NUMBER_MIN = 0
  31. # definition of tester cycle, it will test every CYCLE_TESTER second
  32. CYCLE_TESTER = env.int('CYCLE_TESTER', 20)
  33. # definition of getter cycle, it will get proxy every CYCLE_GETTER second
  34. CYCLE_GETTER = env.int('CYCLE_GETTER', 100)
  35. # definition of tester
  36. TEST_URL = env.str('TEST_URL', 'http://www.baidu.com')
  37. TEST_TIMEOUT = env.int('TEST_TIMEOUT', 10)
  38. TEST_BATCH = env.int('TEST_BATCH', 20)
  39. # TEST_HEADERS = env.json('TEST_HEADERS', {
  40. # 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
  41. # })
  42. TEST_VALID_STATUS = env.list('TEST_VALID_STATUS', [200, 206, 302])
  43. # definition of api
  44. API_HOST = env.str('API_HOST', '0.0.0.0')
  45. API_PORT = env.int('API_PORT', 5555)
  46. API_THREADED = env.bool('API_THREADED', True)
  47. # flags of enable
  48. ENABLE_TESTER = env.bool('ENABLE_TESTER', True)
  49. ENABLE_GETTER = env.bool('ENABLE_GETTER', True)
  50. ENABLE_API = env.bool('ENABLE_API', True)