После создания двух пулов потоков с помощью ThreadPoolExecutor, как я могу использовать loguru для регистрации каждой заPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 После создания двух пулов потоков с помощью ThreadPoolExecutor, как я могу использовать loguru для регистрации каждой за

Сообщение Anonymous »

Вот мой код:

Код: Выделить всё

from loguru import logger
from concurrent.futures import ThreadPoolExecutor
from flask import Flask, request, jsonify
import requests
from gevent.pywsgi import WSGIServer
import json
import os

from my_project.model import My_model

app = Flask(__name__)
flask_port = 1234
HEADER = {'Content-Type': 'application/json'}

executor_1 = ThreadPoolExecutor(max_workers=5)
executor_2 = ThreadPoolExecutor(max_workers=5)

def run_model(data):
model = My_model(data) # in My_model, loguru is used to log info too.
output = model.main()

return output

def task_callback(future):
result = future.result()
if result['code'] == 200:
dict_data = {
"task_id": result['task_id'],
"data": result['data'],
"success": 1
}
else:
dict_data = dict_data = {
"task_id": result['task_id'],
"data": None,
"success": 0
}
json_data = json.dumps(dict_data, ensure_ascii=True)

back_end_url = "http://123.123.55.65:5588/backend"
response = requests.post(url=back_end_url, headers=HEADER, data=json_data, timeout=None)

logger.debug(f"call_back response text: {response.text}")
logger.remove()

@app.route('/service/model_input', methods=['POST'])
def submit_task():
data = request.json
task_id = data['task_id']

# Name and create log files based on the time the model receives the task and its id.
log_dir = "/app/log"
logger.remove()
logger.add(f"{log_dir}/{{time}}_task_{task_id}.log",
level="DEBUG",
backtrace=True,
diagnose=True
)

os.makedirs(log_dir, exist_ok=True)

platform = data['platform']

if platform == 'platform_a':
future = executor_1.submit(run_model, data)
elif platform == 'platform_b':
future = executor_2.submit(run_model, data)
else:
return jsonify({'status': 'invalid platform',
'taskid': data['task_id'],
'platform': data['platform'],
'code': 400})

future.add_done_callback(task_callback)
return jsonify({'status': 'task recieved', 'taskid': data['task_id'], 'code': 202})

if __name__ == '__main__':
print("Service enabled.")
WSGIServer(('0.0.0.0', flask_port), app).serve_forever()

Когда я инициирую несколько задач, например две задачи от каждой из двух платформ, в результате чего каждый пул потоков получает две задачи, будут созданы четыре журнала. Однако я заметил, что в каждом журнале записывается вся информация о задаче от создания до завершения соответствующей задачи (обычно это занимает около 20 минут). Я хочу, чтобы в каждый журнал записывалась только информация, относящаяся к соответствующему ему идентификатору задачи. Как мне настроить код?
T пытался использовать методbind() для привязки задачи и ее обработчика журнала, но файл журнала все равно записывал всю информацию из всех задач, когда соответствующая ему задача выполнялась.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -loguru-to
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать по умолчанию Loguru + и дополнительная информация?
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как использовать по умолчанию Loguru + и дополнительная информация?
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Loguru для нескольких файлов Python
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Вращение Loguru Timeed продолжает создавать файлы журнала при каждом запуске приложения
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Алгоритм обнаружения пулов нулей в матрице
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»