2015-12-10 4 views
1

Сегодня я наткнулся на эту технику, но не уверен, как она работает. Я не думаю, что это действительно важно для этого примера, но я использую Django для приложения.Память в Python, сохраняющаяся между запросами

def post_to_endpoint(request, key=None): 
    if not hasattar(post_to_endpoint, '__my_memo__'): 
     post_to_endpoint.__my_memo__ = { 
      "key1": "url" + "path", 
      "key2": "url2" + "path", 
      "key3": "url3" + "path", 
      "key4": "url4" + "path", 
     } 

    if key: 
     url = post_to_endpoint.__my_memo__.get(key, None) 

     if url: 
      # make my request here 

    # return the response  

Я понимаю, что в этом надуманном примере это, вероятно, микро-оптимизация. В моих функциях я бы просто воссоздал это dict при каждом вызове. На базовом уровне я понимаю, что этот dict спрятан во что-то под названием func_dict, но я действительно не понимаю, как он живет между запросами.

Мое понимание с PHP-фона заключается в том, что вся инфраструктура инициализируется для каждого запроса, но, возможно, это не так с Python/Django/WSGI? Я также очень слаб, понимая, как все это выполняется с процессами/потоками, может быть, эта информация хранится? Я бы ожидал, что что-то вроде этого нужно будет сделать в каком-то сохраненном кеше, но, очевидно, это не так.

Кроме того, плакат в других местах, упомянутых в меморандуме, также может быть достигнут с помощью словаря, но я также не понимаю, как это будет происходить между запросами.

+1

You» я сам ответил на вопрос. Приложение WSGI работает в отдельном процессе (или многих процессах), который сохраняется для многих запросов. –

+0

У вас есть некоторые варианты здесь, используйте ddbb как redis для обмена информацией или даже mmap (не совсем уверен в этом, но я думаю, что он может работать) – Netwave

+0

Используйте систему кеширования, такую ​​как memcached или Redis –

ответ

0

Daniel Роземан ответил на это в комментариях: «Вы ответили себе вопрос приложение WSGI запускается в отдельном процессе (или многих процессов), который сохраняется в течение многих запросов»

 Смежные вопросы

  • Нет связанных вопросов^_^