Node.JS: невозможно проанализировать файл JSON

Ниже перечислены любые глобальные данные Python, которые вы не хотите воссоздавать для каждого запроса, а не только rserve, а не только данные, которые уникальны для каждого пользователя.

Нам нужно некоторое общее местоположение создать соединение rserve для каждого пользователя. Самый простой способ сделать это - запустить multiprocessing.Manager в качестве отдельного процесса.

import atexit
from multiprocessing import Lock
from multiprocessing.managers import BaseManager
import pyRserve

connections = {}
lock = Lock()


def get_connection(user_id):
    with lock:
        if user_id not in connections:
            connections[user_id] = pyRserve.connect()

        return connections[user_id]


@atexit.register
def close_connections():
    for connection in connections.values():
        connection.close()


manager = BaseManager(('', 37844), b'password')
manager.register('get_connection', get_connection)
server = manager.get_server()
server.serve_forever()

Запустить его перед запуском приложения, чтобы менеджер был доступен:

python rserve_manager.py

Мы можем получить доступ к этому менеджеру из приложения во время запросов, используя простую функцию. Это предполагает, что у вас есть значение для «user_id» в сеансе (что, например, делает Flask-Login). Это приведет к уникальному уникальному соединению rserve для каждого пользователя, а не к сеансу.

from multiprocessing.managers import BaseManager
from flask import g, session

def get_rserve():
    if not hasattr(g, 'rserve'):
        manager = BaseManager(('', 37844), b'password')
        manager.register('get_connection')
        manager.connect()
        g.rserve = manager.get_connection(session['user_id'])

    return g.rserve

Доступ к нему внутри представления:

result = get_rserve().eval('3 + 5')

Это должно помочь вам начать, хотя есть много возможностей, которые можно улучшить, например, не жестко кодировать адрес и пароль, а не отбрасывать соединения с менеджером. Это было написано с помощью Python 3, но должно работать с Python 2.

-2
задан Kyngo 16 January 2019 в 11:43
поделиться

2 ответа

Мне наконец удалось решить это. Проблемой был скрытый символ (первый байт строки), из-за которого метод JSON.parse() не удался. Что я сделал, чтобы обойти это следующее: const xData = data.substr(1).

0
ответ дан Kyngo 16 January 2019 в 11:43
поделиться

Попробуйте это:

    var fs = require('fs');
    var obj;
    fs.readFile('./result.json', 'utf8', function (err, data) {
      if (err) throw err;
      obj = JSON.parse(data);
      console.log('title', obj.data.title);
    });
0
ответ дан Alicia 16 January 2019 в 11:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: