uwsgi.cache_set () не работает в отдельном потоке внутри процесса mule - PullRequest
0 голосов
/ 07 марта 2019

Для эксперимента я установил кеш uwsgi.cache_set('test', data) внутри процесса mule. Кеш настроен как положено.

Теперь я создаю поток, из которого я могу получить доступ к этому кешу


Поток включен в uwsgi.ini:

[uwsgi]
threads = 4

в mule.py:

#Threaded function
def a_function():
    uwsgi.cache_set('test', b'NOT OK') <- Nothing happens here
    cache_return = uwsgi.cache_get('test') <- Returns b'OK' which means the cache did not overwrite the previous value.

if __name__ == '__main__':
    cache = uwsgi.cache_set('test', b'OK')  <- Works here
    cache_return = uwsgi.cache_get('test') <- Return b'OK', as expected
    t = Thread(target=a_function)
    t.start()

Вопрос в том, почему это происходит и как я могу установить кеши внутри потока.

1 Ответ

0 голосов
/ 07 марта 2019

ОК, похоже, я использовал неправильную функцию (cache_set) вместо cache_update.

uwsgi.cache_set(key, value[, expire, cache_name])

Установить значение в кеше. Если ключ уже установлен, но не просрочен, ничего не устанавливается .


uwsgi.cache_update(key, value[, expire, cache_name])

Обновить значение в кеше. Это всегда устанавливает ключ , был ли он уже установлен ранее или нет и истек ли он или нет.

...