2013-08-27 2 views
1

У меня есть такой код,Глобальных переменный с Джанго и сельдереем

wl_data = {} 

def set_wl_data(): 
    global wl_data 
    wl_data = get_watchlist_data() 


def get_wl_data(scripcodes): 
    # Filtering Data 
    result = {scripcode:detail for scripcode, detail in wl_data.iteritems() if int(scripcode) in scripcodes or scripcode in scripcodes} 
    return result 

Я бег это как проект Джанго, я звоню метод сеттера из сельдерея, чтобы обновить глобальную переменную wl_data.
tastypie api вызовет метод getter get_wl_data, чтобы получить глобальную переменную wl_data.

Проблема заключается в том, что сельдерей обновляет wl_data должным образом. Но когда мы попадаем в URL-адрес tashypie api в браузере, метод getter обслуживает старые данные.

В переполнении стека существует так много связанных вопросов, но разница здесь - это метод setter, называемый задачей celery. Пожалуйста, помогите мне решить эту проблему.

ответ

4

Если вы делаете что-нибудь с глобальными переменными в проекте Django, вы делаете это неправильно. В этом случае Celery и Django работают в совершенно отдельных процессах, поэтому не могут делиться данными. Вам нужно, чтобы сельдерей хранил эти данные где-нибудь - в db или файле - чтобы Django мог забрать его и обслуживать.

+0

Спасибо @ daniel-roseman.Я использую MongoDB в качестве backend.Shall я использую memchaced или redis, как в памяти, или я должен использовать Mongodb для хранения данных из сельдерея. – zeenfaiz

+0

Любой из них будет в порядке. Могу также использовать MongoDB, как вы уже его создали. –

+0

Спасибо @ Daniel. – zeenfaiz

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