Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2017 20:32:50

IIIypuk
От: /root/
Зарегистрирован: 2012-09-23
Сообщения: 8
Репутация: +  0  -
Профиль   Адрес электронной почты  

Получение данных из потока без блокировок

Есть REST сервер, который возращает некоторые данные по http://…/items/<itemId>/, которые получает из Queue.
Есть поток, который в цикле открывает файл и засовывает содержимое в Queue.

 #!/usr/bin/env python3
import json
import threading
import queue
import time
from bottle import get, run, response
def fileUpdater(s):
    while True:
        time.sleep(s)
        File = open('ololo.json', 'r', encoding='utf-8')
        Data = json.loads('[%s]' % File.read())
        File.close()
        q.put(Data)
q = queue.Queue()
threading.Thread(target=fileUpdater, args=[10]).start()
@get('/items/<itemId>')
def getItem(itemId):
    Data = q.get()
    returnData = list()
    response.content_type = 'application/json'
    return(json.dumps(Data))
run(host='0.0.0.0', port=1337, debug=True)

Посоветуйте, как переписать код правильно, чтобы функция getItem() всегда имела актуальные данные и не ждала окончания работы цикла в потоке?

Пока писал сюда, понял что Queue я использовал не правильно, потому что очередь заполняется каждые 10 секунд, а данные из нее могут забираться гораздо чаще.

Спасибо.

Отредактировано IIIypuk (Янв. 7, 2017 20:35:07)

Офлайн

#2 Янв. 14, 2017 14:19:53

IIIypuk
От: /root/
Зарегистрирован: 2012-09-23
Сообщения: 8
Репутация: +  0  -
Профиль   Адрес электронной почты  

Получение данных из потока без блокировок

Up

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version