From 53967d3961d12e896cd153caae26366d48b58125 Mon Sep 17 00:00:00 2001 From: Dmitry Afanasyev Date: Mon, 6 Sep 2021 20:16:01 +0300 Subject: [PATCH] celery log example with different settings --- .idea/.gitignore | 3 + .idea/different.iml | 8 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + celery_log_docker/Dockerfile | 45 ++ celery_log_docker/__init__.py | 1 + celery_log_docker/celery.log | 143 ++++++ celery_log_docker/celery_config.py | 57 +++ celery_log_docker/config/.env | 7 + celery_log_docker/config/__init__.py | 0 celery_log_docker/config/celeryconfig.py | 2 + celery_log_docker/docker-compose.yml | 62 +++ celery_log_docker/log.log | 16 + celery_log_docker/main.py | 25 + celery_log_docker/poetry.lock | 456 ++++++++++++++++++ celery_log_docker/pyproject.toml | 17 + python-poetry/pyproject.toml | 20 +- 19 files changed, 867 insertions(+), 19 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/different.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 celery_log_docker/Dockerfile create mode 100644 celery_log_docker/__init__.py create mode 100644 celery_log_docker/celery.log create mode 100644 celery_log_docker/celery_config.py create mode 100644 celery_log_docker/config/.env create mode 100644 celery_log_docker/config/__init__.py create mode 100644 celery_log_docker/config/celeryconfig.py create mode 100644 celery_log_docker/docker-compose.yml create mode 100644 celery_log_docker/log.log create mode 100644 celery_log_docker/main.py create mode 100644 celery_log_docker/poetry.lock create mode 100644 celery_log_docker/pyproject.toml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/different.iml b/.idea/different.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/different.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d1e22ec --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..32c5275 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/celery_log_docker/Dockerfile b/celery_log_docker/Dockerfile new file mode 100644 index 0000000..efc24de --- /dev/null +++ b/celery_log_docker/Dockerfile @@ -0,0 +1,45 @@ +FROM python:3.8.9-slim-buster + +ENV BUILD_ONLY_PACKAGES='wget' \ + # python: + PYTHONFAULTHANDLER=1 \ + PYTHONUNBUFFERED=1 \ + PYTHONHASHSEED=random \ + PYTHONDONTWRITEBYTECODE=1 \ + # pip: + PIP_NO_CACHE_DIR=off \ + PIP_DISABLE_PIP_VERSION_CHECK=on \ + PIP_DEFAULT_TIMEOUT=100 \ + # poetry: + POETRY_VERSION=1.1.4 \ + POETRY_NO_INTERACTION=1 \ + POETRY_VIRTUALENVS_CREATE=false \ + POETRY_CACHE_DIR='/var/cache/pypoetry' \ + PATH="$PATH:/root/.poetry/bin" + +# System deps: +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + bash \ + build-essential \ + gettext \ + libpq-dev \ + nano \ + curl \ + # Defining build-time-only dependencies: + $BUILD_ONLY_PACKAGES \ + && curl -sSL 'https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py' | python \ + && poetry --version \ + # Removing build-time-only dependencies: + && apt-get remove -y $BUILD_ONLY_PACKAGES \ + # Cleaning cache: + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && apt-get clean -y && rm -rf /var/lib/apt/lists/* \ + && rm -rf $POETRY_CACHE_DIR + +WORKDIR /code + +# Copy only requirements, to cache them in docker layer +COPY ./poetry.lock ./pyproject.toml /code/ +RUN poetry install +COPY . /code diff --git a/celery_log_docker/__init__.py b/celery_log_docker/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/celery_log_docker/__init__.py @@ -0,0 +1 @@ + diff --git a/celery_log_docker/celery.log b/celery_log_docker/celery.log new file mode 100644 index 0000000..721d6a5 --- /dev/null +++ b/celery_log_docker/celery.log @@ -0,0 +1,143 @@ +[2021-09-06 17:05:09,677: ERROR/MainProcess] consumer: Cannot connect to amqp://rabbit_admin:**@rabbitmq_host:5672//: [Errno 111] Connection refused. +Trying again in 2.00 seconds... (1/100) + +[2021-09-06 17:05:11,684: ERROR/MainProcess] consumer: Cannot connect to amqp://rabbit_admin:**@rabbitmq_host:5672//: [Errno 111] Connection refused. +Trying again in 4.00 seconds... (2/100) + +[2021-09-06 17:05:15,699: INFO/MainProcess] Connected to amqp://rabbit_admin:**@rabbitmq_host:5672// +[2021-09-06 17:05:15,705: INFO/MainProcess] mingle: searching for neighbors +[2021-09-06 17:05:16,728: INFO/MainProcess] mingle: all alone +[2021-09-06 17:05:16,741: INFO/MainProcess] celery@5885d9799983 ready. +[2021-09-06 17:06:10,637: INFO/MainProcess] Task main.test[8fc376db-1752-4dfc-a9b3-94d5b4a53524] received +[2021-09-06 17:06:10,637: INFO/ForkPoolWorker-1] WE ARE HERE +[2021-09-06 17:06:10,637: WARNING/ForkPoolWorker-1] 4 +[2021-09-06 17:06:10,638: WARNING/ForkPoolWorker-1] + +[2021-09-06 17:06:10,638: INFO/ForkPoolWorker-1] 4 +[2021-09-06 17:06:10,651: INFO/ForkPoolWorker-1] Task main.test[8fc376db-1752-4dfc-a9b3-94d5b4a53524] succeeded in 0.013417366000794573s: 4 +[2021-09-06 17:07:11,945: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection... +Traceback (most recent call last): + File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py", line 326, in start + blueprint.start(self) + File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py", line 116, in start + step.start(parent) + File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py", line 618, in start + c.loop(*c.loop_args()) + File "/usr/local/lib/python3.8/site-packages/celery/worker/loops.py", line 81, in asynloop + next(loop) + File "/usr/local/lib/python3.8/site-packages/kombu/asynchronous/hub.py", line 361, in create_loop + cb(*cbargs) + File "/usr/local/lib/python3.8/site-packages/kombu/transport/base.py", line 235, in on_readable + reader(loop) + File "/usr/local/lib/python3.8/site-packages/kombu/transport/base.py", line 217, in _read + drain_events(timeout=0) + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 523, in drain_events + while not self.blocking_read(timeout): + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 529, in blocking_read + return self.on_inbound_frame(frame) + File "/usr/local/lib/python3.8/site-packages/amqp/method_framing.py", line 53, in on_frame + callback(channel, method_sig, buf, None) + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 535, in on_inbound_method + return self.channels[channel_id].dispatch_method( + File "/usr/local/lib/python3.8/site-packages/amqp/abstract_channel.py", line 143, in dispatch_method + listener(*args) + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 664, in _on_close + self._x_close_ok() + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 679, in _x_close_ok + self.send_method(spec.Connection.CloseOk, callback=self._on_close_ok) + File "/usr/local/lib/python3.8/site-packages/amqp/abstract_channel.py", line 57, in send_method + conn.frame_writer(1, self.channel_id, sig, args, content) + File "/usr/local/lib/python3.8/site-packages/amqp/method_framing.py", line 183, in write_frame + write(view[:offset]) + File "/usr/local/lib/python3.8/site-packages/amqp/transport.py", line 352, in write + self._write(s) +ConnectionResetError: [Errno 104] Connection reset by peer +[2021-09-06 17:07:11,947: WARNING/MainProcess] /usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py:361: CPendingDeprecationWarning: +In Celery 5.1 we introduced an optional breaking change which +on connection loss cancels all currently executed tasks with late acknowledgement enabled. +These tasks cannot be acknowledged as the connection is gone, and the tasks are automatically redelivered back to the queue. +You can enable this behavior using the worker_cancel_long_running_tasks_on_connection_loss setting. +In Celery 5.1 it is set to False by default. The setting will be set to True by default in Celery 6.0. + + warnings.warn(CANCEL_TASKS_BY_DEFAULT, CPendingDeprecationWarning) + +[2021-09-06 17:07:19,647: ERROR/MainProcess] consumer: Cannot connect to amqp://rabbit_admin:**@rabbitmq_host:5672//: [Errno 111] Connection refused. +Trying again in 2.00 seconds... (1/100) + +[2021-09-06 17:07:20,045: ERROR/MainProcess] consumer: Cannot connect to amqp://rabbit_admin:**@rabbitmq_host:5672//: [Errno 111] Connection refused. +Trying again in 2.00 seconds... (1/100) + +[2021-09-06 17:07:21,654: ERROR/MainProcess] consumer: Cannot connect to amqp://rabbit_admin:**@rabbitmq_host:5672//: [Errno 111] Connection refused. +Trying again in 4.00 seconds... (2/100) + +[2021-09-06 17:07:22,053: ERROR/MainProcess] consumer: Cannot connect to amqp://rabbit_admin:**@rabbitmq_host:5672//: [Errno 111] Connection refused. +Trying again in 4.00 seconds... (2/100) + +[2021-09-06 17:07:25,684: INFO/MainProcess] Connected to amqp://rabbit_admin:**@rabbitmq_host:5672// +[2021-09-06 17:07:25,710: INFO/MainProcess] mingle: searching for neighbors +[2021-09-06 17:07:26,079: INFO/MainProcess] Connected to amqp://rabbit_admin:**@rabbitmq_host:5672// +[2021-09-06 17:07:26,098: INFO/MainProcess] mingle: searching for neighbors +[2021-09-06 17:07:26,739: INFO/MainProcess] mingle: all alone +[2021-09-06 17:07:26,782: INFO/MainProcess] celery@2f1496df298b ready. +[2021-09-06 17:07:27,128: INFO/MainProcess] mingle: all alone +[2021-09-06 17:07:27,174: INFO/MainProcess] celery@265915b3bb4d ready. +[2021-09-06 17:07:42,029: INFO/MainProcess] Task main.test[7e78bcba-0161-45b9-b7bf-05bc9a532a46] received +[2021-09-06 17:07:42,029: INFO/ForkPoolWorker-1] WE ARE HERE +[2021-09-06 17:07:42,030: WARNING/ForkPoolWorker-1] 4 +[2021-09-06 17:07:42,030: WARNING/ForkPoolWorker-1] + +[2021-09-06 17:07:42,030: INFO/ForkPoolWorker-1] 4 +[2021-09-06 17:07:42,043: INFO/ForkPoolWorker-1] Task main.test[7e78bcba-0161-45b9-b7bf-05bc9a532a46] succeeded in 0.01332545499826665s: 4 +[2021-09-06 17:08:05,780: INFO/MainProcess] Task main.test[85d97d31-2029-41c6-a576-50ba61240007] received +[2021-09-06 17:08:05,781: INFO/ForkPoolWorker-1] WE ARE HERE +[2021-09-06 17:08:05,781: WARNING/ForkPoolWorker-1] 4 +[2021-09-06 17:08:05,781: WARNING/ForkPoolWorker-1] + +[2021-09-06 17:08:05,781: INFO/ForkPoolWorker-1] 4 +[2021-09-06 17:08:05,795: INFO/ForkPoolWorker-1] Task main.test[85d97d31-2029-41c6-a576-50ba61240007] succeeded in 0.013929769000242231s: 4 +[2021-09-06 17:13:37,692: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection... +Traceback (most recent call last): + File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py", line 326, in start + blueprint.start(self) + File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py", line 116, in start + step.start(parent) + File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py", line 618, in start + c.loop(*c.loop_args()) + File "/usr/local/lib/python3.8/site-packages/celery/worker/loops.py", line 81, in asynloop + next(loop) + File "/usr/local/lib/python3.8/site-packages/kombu/asynchronous/hub.py", line 361, in create_loop + cb(*cbargs) + File "/usr/local/lib/python3.8/site-packages/kombu/transport/base.py", line 235, in on_readable + reader(loop) + File "/usr/local/lib/python3.8/site-packages/kombu/transport/base.py", line 217, in _read + drain_events(timeout=0) + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 523, in drain_events + while not self.blocking_read(timeout): + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 529, in blocking_read + return self.on_inbound_frame(frame) + File "/usr/local/lib/python3.8/site-packages/amqp/method_framing.py", line 53, in on_frame + callback(channel, method_sig, buf, None) + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 535, in on_inbound_method + return self.channels[channel_id].dispatch_method( + File "/usr/local/lib/python3.8/site-packages/amqp/abstract_channel.py", line 143, in dispatch_method + listener(*args) + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 664, in _on_close + self._x_close_ok() + File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 679, in _x_close_ok + self.send_method(spec.Connection.CloseOk, callback=self._on_close_ok) + File "/usr/local/lib/python3.8/site-packages/amqp/abstract_channel.py", line 57, in send_method + conn.frame_writer(1, self.channel_id, sig, args, content) + File "/usr/local/lib/python3.8/site-packages/amqp/method_framing.py", line 183, in write_frame + write(view[:offset]) + File "/usr/local/lib/python3.8/site-packages/amqp/transport.py", line 352, in write + self._write(s) +ConnectionResetError: [Errno 104] Connection reset by peer +[2021-09-06 17:13:37,693: WARNING/MainProcess] /usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py:361: CPendingDeprecationWarning: +In Celery 5.1 we introduced an optional breaking change which +on connection loss cancels all currently executed tasks with late acknowledgement enabled. +These tasks cannot be acknowledged as the connection is gone, and the tasks are automatically redelivered back to the queue. +You can enable this behavior using the worker_cancel_long_running_tasks_on_connection_loss setting. +In Celery 5.1 it is set to False by default. The setting will be set to True by default in Celery 6.0. + + warnings.warn(CANCEL_TASKS_BY_DEFAULT, CPendingDeprecationWarning) + diff --git a/celery_log_docker/celery_config.py b/celery_log_docker/celery_config.py new file mode 100644 index 0000000..f03bf73 --- /dev/null +++ b/celery_log_docker/celery_config.py @@ -0,0 +1,57 @@ +from celery import Celery +from celery.signals import after_setup_logger +from celery.utils.log import get_task_logger +# from server.settings.components import config +from pathlib import Path, PurePath +from decouple import AutoConfig +import logging + + +logger = logging.getLogger('My_logger') + +# @after_setup_logger.connect +def conf_celery_logger(logger, **kwargs): + formatter = logging.Formatter(datefmt="%Y.%m.%d %H:%M:%S", + fmt='%(asctime)s | %(levelname)s | ' + 'process: %(process)d | ' + 'module name: %(name)s | ' + 'func name: %(funcName)s | ' + 'line number: %(lineno)s | ' + 'message: %(message)s',) + handler = logging.FileHandler('log.log') + handler.setLevel('DEBUG') + handler.setFormatter(formatter) + logger.addHandler(handler) + logger.setLevel('DEBUG') + + +conf_celery_logger(logger) + +# BASE_DIR = Path.cwd().parent.parent +BASE_DIR = PurePath(__file__).parent + +config = AutoConfig(search_path=BASE_DIR.joinpath('config')) + +RABBITMQ_DEFAULT_USER = config('RABBITMQ_DEFAULT_USER') +RABBITMQ_DEFAULT_PASS = config('RABBITMQ_DEFAULT_PASS') +RABBITMQ_PORT = config('RABBITMQ_PORT', cast=int, default=5672) +RABBITMQ_HOST = config('RABBITMQ_HOST') + + +celery_app = Celery( + 'tasks', + broker='amqp://{login}:{password}@{host}:{port}'.format( + login=RABBITMQ_DEFAULT_USER, + password=RABBITMQ_DEFAULT_PASS, + host=RABBITMQ_HOST, + port=RABBITMQ_PORT, + ), + backend='rpc://', +) + +celery_app.config_from_object('config.celeryconfig') +# celery_app.conf.update({'worker_hijack_root_logger': False}) + +celery_app.autodiscover_tasks() + +logger.info(f"{__name__} imported {celery_app.conf['worker_hijack_root_logger']}") diff --git a/celery_log_docker/config/.env b/celery_log_docker/config/.env new file mode 100644 index 0000000..d50c473 --- /dev/null +++ b/celery_log_docker/config/.env @@ -0,0 +1,7 @@ +RABBITMQ_DEFAULT_USER=rabbit_admin +RABBITMQ_DEFAULT_PASS=rabbit_password +RABBITMQ_PORT=5672 +RABBITMQ_HOST=rabbitmq_host + +# =======Celery worker as root====== +#C_FORCE_ROOT=true diff --git a/celery_log_docker/config/__init__.py b/celery_log_docker/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/celery_log_docker/config/celeryconfig.py b/celery_log_docker/config/celeryconfig.py new file mode 100644 index 0000000..05dbfdc --- /dev/null +++ b/celery_log_docker/config/celeryconfig.py @@ -0,0 +1,2 @@ +# worker_hijack_root_logger = False +# worker_redirect_stdouts = True diff --git a/celery_log_docker/docker-compose.yml b/celery_log_docker/docker-compose.yml new file mode 100644 index 0000000..d100e9c --- /dev/null +++ b/celery_log_docker/docker-compose.yml @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +version: "3.7" + +networks: + # Network for your internals, use it by default: + telebot_network: + name: + celery_log_network + ipam: + config: + - subnet: 200.20.0.0/24 + +services: + + rabbitmq: + hostname: rabbitmq_host + image: rabbitmq:3.8.18-management-alpine + container_name: celery_rabbit + env_file: config/.env + restart: unless-stopped + networks: + telebot_network: + ipv4_address: 200.20.0.11 + ports: + - 15672:15672 + - 5672:5672 + + web: + image: "celery_log" + container_name: celery_log_app + build: + context: . + dockerfile: Dockerfile + restart: unless-stopped + volumes: + - .:/code + networks: + telebot_network: + ipv4_address: 200.20.0.12 + env_file: ./config/.env + command: > + bash -c "celery --app=main:app worker --concurrency=1 --loglevel=info --logfile=celery.log" + + worker: + container_name: celery_log_worker + image: "celery_log" + command: > + bash -c "celery --app=main:app worker --concurrency=1 --loglevel=info --logfile=celery.log" + env_file: config/.env + volumes: + - .:/code + depends_on: + - rabbitmq + - web + restart: unless-stopped + networks: + telebot_network: + ipv4_address: 200.20.0.14 + + + diff --git a/celery_log_docker/log.log b/celery_log_docker/log.log new file mode 100644 index 0000000..9afe5f0 --- /dev/null +++ b/celery_log_docker/log.log @@ -0,0 +1,16 @@ +2021.09.06 17:05:09 | INFO | process: 1 | module name: My_logger | func name: | line number: 57 | message: celery_config imported True +2021.09.06 17:05:09 | INFO | process: 1 | module name: My_logger | func name: | line number: 25 | message: main imported +2021.09.06 17:05:53 | INFO | process: 15 | module name: My_logger | func name: | line number: 57 | message: celery_config imported True +2021.09.06 17:05:53 | INFO | process: 15 | module name: My_logger | func name: | line number: 25 | message: main imported +2021.09.06 17:06:10 | INFO | process: 8 | module name: My_logger | func name: test | line number: 17 | message: WE ARE HERE +2021.09.06 17:06:10 | INFO | process: 8 | module name: My_logger | func name: test | line number: 20 | message: 4 +2021.09.06 17:07:19 | INFO | process: 1 | module name: My_logger | func name: | line number: 57 | message: celery_config imported True +2021.09.06 17:07:19 | INFO | process: 1 | module name: My_logger | func name: | line number: 25 | message: main imported +2021.09.06 17:07:19 | INFO | process: 1 | module name: My_logger | func name: | line number: 57 | message: celery_config imported True +2021.09.06 17:07:19 | INFO | process: 1 | module name: My_logger | func name: | line number: 25 | message: main imported +2021.09.06 17:07:32 | INFO | process: 9 | module name: My_logger | func name: | line number: 57 | message: celery_config imported True +2021.09.06 17:07:32 | INFO | process: 9 | module name: My_logger | func name: | line number: 25 | message: main imported +2021.09.06 17:07:42 | INFO | process: 8 | module name: My_logger | func name: test | line number: 17 | message: WE ARE HERE +2021.09.06 17:07:42 | INFO | process: 8 | module name: My_logger | func name: test | line number: 20 | message: 4 +2021.09.06 17:08:05 | INFO | process: 9 | module name: My_logger | func name: test | line number: 17 | message: WE ARE HERE +2021.09.06 17:08:05 | INFO | process: 9 | module name: My_logger | func name: test | line number: 20 | message: 4 diff --git a/celery_log_docker/main.py b/celery_log_docker/main.py new file mode 100644 index 0000000..859f716 --- /dev/null +++ b/celery_log_docker/main.py @@ -0,0 +1,25 @@ +import logging + +from celery_config import celery_app as app +from celery.utils.log import get_task_logger + + +#logger = get_task_logger('My_logger') + +logger = logging.getLogger('My_logger') + +# logger.addHandler(handler) +# logger.setLevel('DEBUG') + + +@app.task() +def test(x: int, y: int) -> int: + logger.info('WE ARE HERE') + print(x + y) + result = x + y + logger.info(result) + return result + + +# test(6, 8) +logger.info(f'{__name__} imported') diff --git a/celery_log_docker/poetry.lock b/celery_log_docker/poetry.lock new file mode 100644 index 0000000..739ebd2 --- /dev/null +++ b/celery_log_docker/poetry.lock @@ -0,0 +1,456 @@ +[[package]] +name = "amqp" +version = "5.0.6" +description = "Low-level AMQP client for Python (fork of amqplib)." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +vine = "5.0.0" + +[[package]] +name = "appnope" +version = "0.1.2" +description = "Disable App Nap on macOS >= 10.9" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "backcall" +version = "0.2.0" +description = "Specifications for callback functions passed in to an API" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "billiard" +version = "3.6.4.0" +description = "Python multiprocessing fork with improvements and bugfixes" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "celery" +version = "5.1.2" +description = "Distributed Task Queue." +category = "main" +optional = false +python-versions = ">=3.6," + +[package.dependencies] +billiard = ">=3.6.4.0,<4.0" +click = ">=7.0,<8.0" +click-didyoumean = ">=0.0.3" +click-plugins = ">=1.1.1" +click-repl = ">=0.1.6" +kombu = ">=5.1.0,<6.0" +pytz = ">0.0-dev" +vine = ">=5.0.0,<6.0" + +[package.extras] +arangodb = ["pyArango (>=1.3.2)"] +auth = ["cryptography"] +azureblockblob = ["azure-storage-blob (==12.6.0)"] +brotli = ["brotli (>=1.0.0)", "brotlipy (>=0.7.0)"] +cassandra = ["cassandra-driver (<3.21.0)"] +consul = ["python-consul2"] +cosmosdbsql = ["pydocumentdb (==2.3.2)"] +couchbase = ["couchbase (>=3.0.0)"] +couchdb = ["pycouchdb"] +django = ["Django (>=1.11)"] +dynamodb = ["boto3 (>=1.9.178)"] +elasticsearch = ["elasticsearch"] +eventlet = ["eventlet (>=0.26.1)"] +gevent = ["gevent (>=1.0.0)"] +librabbitmq = ["librabbitmq (>=1.5.0)"] +memcache = ["pylibmc"] +mongodb = ["pymongo[srv] (>=3.3.0)"] +msgpack = ["msgpack"] +pymemcache = ["python-memcached"] +pyro = ["pyro4"] +pytest = ["pytest-celery"] +redis = ["redis (>=3.2.0)"] +s3 = ["boto3 (>=1.9.125)"] +slmq = ["softlayer-messaging (>=1.0.3)"] +solar = ["ephem"] +sqlalchemy = ["sqlalchemy"] +sqs = ["boto3 (>=1.9.125)", "pycurl (==7.43.0.5)"] +tblib = ["tblib (>=1.3.0)", "tblib (>=1.5.0)"] +yaml = ["PyYAML (>=3.10)"] +zookeeper = ["kazoo (>=1.3.1)"] +zstd = ["zstandard"] + +[[package]] +name = "click" +version = "7.1.2" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "click-didyoumean" +version = "0.0.3" +description = "Enable git-like did-you-mean feature in click." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = "*" + +[[package]] +name = "click-plugins" +version = "1.1.1" +description = "An extension module for click to enable registering CLI commands via setuptools entry-points." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = ">=4.0" + +[package.extras] +dev = ["pytest (>=3.6)", "pytest-cov", "wheel", "coveralls"] + +[[package]] +name = "click-repl" +version = "0.2.0" +description = "REPL plugin for Click" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +click = "*" +prompt-toolkit = "*" +six = "*" + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "decorator" +version = "5.0.9" +description = "Decorators for Humans" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "ipython" +version = "7.27.0" +description = "IPython: Productive Interactive Computing" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +appnope = {version = "*", markers = "sys_platform == \"darwin\""} +backcall = "*" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} +pickleshare = "*" +prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" +pygments = "*" +traitlets = ">=4.2" + +[package.extras] +all = ["Sphinx (>=1.3)", "ipykernel", "ipyparallel", "ipywidgets", "nbconvert", "nbformat", "nose (>=0.10.1)", "notebook", "numpy (>=1.17)", "pygments", "qtconsole", "requests", "testpath"] +doc = ["Sphinx (>=1.3)"] +kernel = ["ipykernel"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["notebook", "ipywidgets"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.17)"] + +[[package]] +name = "jedi" +version = "0.18.0" +description = "An autocompletion tool for Python that can be used for text editors." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +parso = ">=0.8.0,<0.9.0" + +[package.extras] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<6.0.0)"] + +[[package]] +name = "kombu" +version = "5.1.0" +description = "Messaging library for Python." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +amqp = ">=5.0.6,<6.0.0" +vine = "*" + +[package.extras] +azureservicebus = ["azure-servicebus (>=7.0.0)"] +azurestoragequeues = ["azure-storage-queue"] +consul = ["python-consul (>=0.6.0)"] +librabbitmq = ["librabbitmq (>=1.5.2)"] +mongodb = ["pymongo (>=3.3.0)"] +msgpack = ["msgpack"] +pyro = ["pyro4"] +qpid = ["qpid-python (>=0.26)", "qpid-tools (>=0.26)"] +redis = ["redis (>=3.3.11)"] +slmq = ["softlayer-messaging (>=1.0.3)"] +sqlalchemy = ["sqlalchemy"] +sqs = ["boto3 (>=1.4.4)", "pycurl (==7.43.0.2)", "urllib3 (<1.26)"] +yaml = ["PyYAML (>=3.10)"] +zookeeper = ["kazoo (>=1.3.1)"] + +[[package]] +name = "matplotlib-inline" +version = "0.1.2" +description = "Inline Matplotlib backend for Jupyter" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +traitlets = "*" + +[[package]] +name = "parso" +version = "0.8.2" +description = "A Python Parser" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["docopt", "pytest (<6.0.0)"] + +[[package]] +name = "pexpect" +version = "4.8.0" +description = "Pexpect allows easy control of interactive console applications." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +name = "pickleshare" +version = "0.7.5" +description = "Tiny 'shelve'-like database with concurrency support" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "prompt-toolkit" +version = "3.0.20" +description = "Library for building powerful interactive command lines in Python" +category = "main" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pygments" +version = "2.10.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "python-decouple" +version = "3.4" +description = "Strict separation of settings from code." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pytz" +version = "2021.1" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "traitlets" +version = "5.1.0" +description = "Traitlets Python configuration system" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "vine" +version = "5.0.0" +description = "Promises, promises, promises." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "main" +optional = false +python-versions = "*" + +[metadata] +lock-version = "1.1" +python-versions = "3.8.9" +content-hash = "07d357235ac54ad608c3f4623bd553e9147112fde6995d1dcb900f2f2deeb68c" + +[metadata.files] +amqp = [ + {file = "amqp-5.0.6-py3-none-any.whl", hash = "sha256:493a2ac6788ce270a2f6a765b017299f60c1998f5a8617908ee9be082f7300fb"}, + {file = "amqp-5.0.6.tar.gz", hash = "sha256:03e16e94f2b34c31f8bf1206d8ddd3ccaa4c315f7f6a1879b7b1210d229568c2"}, +] +appnope = [ + {file = "appnope-0.1.2-py2.py3-none-any.whl", hash = "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442"}, + {file = "appnope-0.1.2.tar.gz", hash = "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"}, +] +backcall = [ + {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, + {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, +] +billiard = [ + {file = "billiard-3.6.4.0-py3-none-any.whl", hash = "sha256:87103ea78fa6ab4d5c751c4909bcff74617d985de7fa8b672cf8618afd5a875b"}, + {file = "billiard-3.6.4.0.tar.gz", hash = "sha256:299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547"}, +] +celery = [ + {file = "celery-5.1.2-py3-none-any.whl", hash = "sha256:9dab2170b4038f7bf10ef2861dbf486ddf1d20592290a1040f7b7a1259705d42"}, + {file = "celery-5.1.2.tar.gz", hash = "sha256:8d9a3de9162965e97f8e8cc584c67aad83b3f7a267584fa47701ed11c3e0d4b0"}, +] +click = [ + {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, + {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, +] +click-didyoumean = [ + {file = "click-didyoumean-0.0.3.tar.gz", hash = "sha256:112229485c9704ff51362fe34b2d4f0b12fc71cc20f6d2b3afabed4b8bfa6aeb"}, +] +click-plugins = [ + {file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b"}, + {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"}, +] +click-repl = [ + {file = "click-repl-0.2.0.tar.gz", hash = "sha256:cd12f68d745bf6151210790540b4cb064c7b13e571bc64b6957d98d120dacfd8"}, + {file = "click_repl-0.2.0-py3-none-any.whl", hash = "sha256:94b3fbbc9406a236f176e0506524b2937e4b23b6f4c0c0b2a0a83f8a64e9194b"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +decorator = [ + {file = "decorator-5.0.9-py3-none-any.whl", hash = "sha256:6e5c199c16f7a9f0e3a61a4a54b3d27e7dad0dbdde92b944426cb20914376323"}, + {file = "decorator-5.0.9.tar.gz", hash = "sha256:72ecfba4320a893c53f9706bebb2d55c270c1e51a28789361aa93e4a21319ed5"}, +] +ipython = [ + {file = "ipython-7.27.0-py3-none-any.whl", hash = "sha256:75b5e060a3417cf64f138e0bb78e58512742c57dc29db5a5058a2b1f0c10df02"}, + {file = "ipython-7.27.0.tar.gz", hash = "sha256:58b55ebfdfa260dad10d509702dc2857cb25ad82609506b070cf2d7b7df5af13"}, +] +jedi = [ + {file = "jedi-0.18.0-py2.py3-none-any.whl", hash = "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93"}, + {file = "jedi-0.18.0.tar.gz", hash = "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707"}, +] +kombu = [ + {file = "kombu-5.1.0-py3-none-any.whl", hash = "sha256:e2dedd8a86c9077c350555153825a31e456a0dc20c15d5751f00137ec9c75f0a"}, + {file = "kombu-5.1.0.tar.gz", hash = "sha256:01481d99f4606f6939cdc9b637264ed353ee9e3e4f62cfb582324142c41a572d"}, +] +matplotlib-inline = [ + {file = "matplotlib-inline-0.1.2.tar.gz", hash = "sha256:f41d5ff73c9f5385775d5c0bc13b424535c8402fe70ea8210f93e11f3683993e"}, + {file = "matplotlib_inline-0.1.2-py3-none-any.whl", hash = "sha256:5cf1176f554abb4fa98cb362aa2b55c500147e4bdbb07e3fda359143e1da0811"}, +] +parso = [ + {file = "parso-0.8.2-py2.py3-none-any.whl", hash = "sha256:a8c4922db71e4fdb90e0d0bc6e50f9b273d3397925e5e60a717e719201778d22"}, + {file = "parso-0.8.2.tar.gz", hash = "sha256:12b83492c6239ce32ff5eed6d3639d6a536170723c6f3f1506869f1ace413398"}, +] +pexpect = [ + {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, + {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, +] +pickleshare = [ + {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, + {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, +] +prompt-toolkit = [ + {file = "prompt_toolkit-3.0.20-py3-none-any.whl", hash = "sha256:6076e46efae19b1e0ca1ec003ed37a933dc94b4d20f486235d436e64771dcd5c"}, + {file = "prompt_toolkit-3.0.20.tar.gz", hash = "sha256:eb71d5a6b72ce6db177af4a7d4d7085b99756bf656d98ffcc4fecd36850eea6c"}, +] +ptyprocess = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] +pygments = [ + {file = "Pygments-2.10.0-py3-none-any.whl", hash = "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380"}, + {file = "Pygments-2.10.0.tar.gz", hash = "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"}, +] +python-decouple = [ + {file = "python-decouple-3.4.tar.gz", hash = "sha256:2e5adb0263a4f963b58d7407c4760a2465d464ee212d733e2a2c179e54c08d8f"}, + {file = "python_decouple-3.4-py3-none-any.whl", hash = "sha256:a8268466e6389a639a20deab9d880faee186eb1eb6a05e54375bdf158d691981"}, +] +pytz = [ + {file = "pytz-2021.1-py2.py3-none-any.whl", hash = "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798"}, + {file = "pytz-2021.1.tar.gz", hash = "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +traitlets = [ + {file = "traitlets-5.1.0-py3-none-any.whl", hash = "sha256:03f172516916220b58c9f19d7f854734136dd9528103d04e9bf139a92c9f54c4"}, + {file = "traitlets-5.1.0.tar.gz", hash = "sha256:bd382d7ea181fbbcce157c133db9a829ce06edffe097bcf3ab945b435452b46d"}, +] +vine = [ + {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"}, + {file = "vine-5.0.0.tar.gz", hash = "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] diff --git a/celery_log_docker/pyproject.toml b/celery_log_docker/pyproject.toml new file mode 100644 index 0000000..5c3423a --- /dev/null +++ b/celery_log_docker/pyproject.toml @@ -0,0 +1,17 @@ +[tool.poetry] +name = "celery_log" +version = "0.1.0" +description = "testing log for celery in file" +authors = ["Dmitry Afanasyev "] + +[tool.poetry.dependencies] +python = "3.8.9" +celery = "^5.1.2" +ipython = "^7.25" +python-decouple = "^3.3" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/python-poetry/pyproject.toml b/python-poetry/pyproject.toml index ff71f4d..32f30dd 100644 --- a/python-poetry/pyproject.toml +++ b/python-poetry/pyproject.toml @@ -20,25 +20,7 @@ pandas = "1.0.3" flask = "1.1.2" sqlalchemy = "1.3.22" -django = "^3.1" -django-split-settings = "^1.0" -django-health-check = "^3.16" -celery = "^5.0.4" -django-celery-results = "^2.0.0" -django-celery-beat = "^2.1.0" -eventlet = "0.30.0" -django-constance="2.8.0" -redis="3.5.3" -django-picklefield="3.0.1" -docutils="0.16" -whitenoise = "^5.2.0" -gunicorn = "^20.0" -bcrypt = "^3.2" -django-debug-toolbar = "^3.2" -django-querycount = "^0.7" -django-extra-checks = "^0.8" -django-coverage-plugin = "^1.8" -nplusone = "^1.0" + [tool.poetry.dev-dependencies]