Найти - Пользователи
Полная версия: Получение данных из потока без блокировок
Начало » Python для новичков » Получение данных из потока без блокировок
1
IIIypuk
Есть 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
Up
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB