-
Notifications
You must be signed in to change notification settings - Fork 8
Celery
- Histori: usulan dan konfirmasi
Celery adalah salah satu project antrian paling populer untuk Python dan juga mudah untuk diintegrasikan dan digunakan.
Hal-hal yang dijalankan Celery dalam antrian secara default meliputi:
- mengirim email
- membuat gambar thumbnails
- menghasilkan file umpan (umpan Google Merchant)
Unit eksekusi, yang disebut tugas, dieksekusi bersamaan pada satu atau lebih server pekerja menggunakan multiprosesor, Eventlet, atau gevent.
Tugas dapat dieksekusi sbb
- secara tidak sinkron (di latar belakang) atau
- secara sinkron (tunggu sampai siap).
Saleor menggunakan Redis disetel via lingkungan:
DATABASE_URL=postgres://saleor:saleor@db/saleor
DEFAULT_FROM_EMAIL=noreply@example.com
OPENEXCHANGERATES_API_KEY
CACHE_URL=redis://redis:6379/0
CELERY_BROKER_URL=redis://redis:6379/1
SECRET_KEY=changeme
JWT_VERIFY_EXPIRATION=True
VATLAYER_ACCESS_KEY
- Update history meliputi file berikut
- saleor/settings.py
- saleor/celeryconf.py
- saleor/userprofile/management/commands/.py
- saleor/search/backends/elasticsearch.py
- saleor/product/models.py
$ docker ps
CONTAINER ID IMAGE COMMAND NAMES
0abb19d50414 chetabahana/saleor "celery -A saleor wo…" backend_celery_1
529752a79fe3 postgres "docker-entrypoint.s…" backend_postgres_1
812a0a46cf74 redis "docker-entrypoint.s…" backend_redis_1
$ docker exec -it backend_celery_1 bash
saleor@0abb19d50414:/app$ celery --help
usage: celery <command> [options]
Show help screen and exit.
positional arguments:
args
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
Global Options:
-A APP, --app APP
-b BROKER, --broker BROKER
--result-backend RESULT_BACKEND
--loader LOADER
--config CONFIG
--workdir WORKDIR
--no-color, -C
--quiet, -q
---- -- - - ---- Commands- -------------- --- ------------
+ Main:
| celery worker
| celery events
| celery beat
| celery shell
| celery multi
| celery amqp
+ Remote Control:
| celery status
| celery inspect --help
| celery inspect active
| celery inspect active_queues
| celery inspect clock
| celery inspect conf [include_defaults=False]
| celery inspect memdump [n_samples=10]
| celery inspect memsample
| celery inspect objgraph [object_type=Request] [num=200 [max_depth=10]]
| celery inspect ping
| celery inspect query_task [id1 [id2 [... [idN]]]]
| celery inspect registered [attr1 [attr2 [... [attrN]]]]
| celery inspect report
| celery inspect reserved
| celery inspect revoked
| celery inspect scheduled
| celery inspect stats
| celery control --help
| celery control add_consumer <queue> [exchange [type [routing_key]]]
| celery control autoscale [max [min]]
| celery control cancel_consumer <queue>
| celery control disable_events
| celery control election
| celery control enable_events
| celery control heartbeat
| celery control pool_grow [N=1]
| celery control pool_restart
| celery control pool_shrink [N=1]
| celery control rate_limit <task_name> <rate_limit (e.g., 5/s | 5/m | 5/h)>
| celery control revoke [id1 [id2 [... [idN]]]]
| celery control shutdown
| celery control terminate <signal> [id1 [id2 [... [idN]]]]
| celery control time_limit <task_name> <soft_secs> [hard_secs]
+ Utils:
| celery purge
| celery list
| celery call
| celery result
| celery migrate
| celery graph
| celery upgrade
+ Debugging:
| celery report
| celery logtool
---- -- - - --------- -- - -------------- --- ------------
Type 'celery <command> --help' for help using a specific command.
# Names of nodes to start
# most people will only start one node:
CELERYD_NODES="worker1"
# but you can also start multiple and configure settings
# for each in CELERYD_OPTS
#CELERYD_NODES="worker1 worker2 worker3"
# alternatively, you can specify the number of nodes to start:
#CELERYD_NODES=10
# Absolute or relative path to the 'celery' command:
CELERY_BIN="/usr/local/bin/celery"
#CELERY_BIN="/virtualenvs/def/bin/celery"
# App instance to use
# comment out this line if you don't use an app
CELERY_APP="proj"
# or fully qualified:
#CELERY_APP="proj.tasks:app"
# Where to chdir at start.
CELERYD_CHDIR="/opt/Myproject/"
# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=300 --concurrency=8"
# Configure node-specific settings by appending node name to arguments:
#CELERYD_OPTS="--time-limit=300 -c 8 -c:worker2 4 -c:worker3 2 -Ofair:worker1"
# Set logging level to DEBUG
#CELERYD_LOG_LEVEL="DEBUG"
# %n will be replaced with the first part of the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
# Workers should run as an unprivileged user.
# You need to create this user manually (or you can choose
# a user/group combination that already exists (e.g., nobody).
CELERYD_USER="celery"
CELERYD_GROUP="celery"
# If enabled pid and log directories will be created if missing,
# and owned by the userid/group configured.
CELERY_CREATE_DIRS=1
$ docker exec -it backend_celery_1 bash
saleor@0abb19d50414:/app$ id
uid=999(saleor) gid=999(saleor) groups=999(saleor)
saleor@0abb19d50414:/app$ celery -A saleor worker --app=saleor.celeryconf:app \
--loglevel=info
-------------- celery@0abb19d50414 v4.3.0 (rhubarb)
---- **** -----
--- * *** * -- Linux-4.15.0-1029-gcp-x86_64-with-debian-9.8 2019-04-20 17:38:35
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: saleor:0x7ff1fbacfeb8
- ** ---------- .> transport: redis://redis:6379/1
- ** ---------- .> results:
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[tasks]
. saleor.account.emails.send_account_delete_confirmation_email
. saleor.account.emails.send_password_reset_email
. saleor.account.thumbnails.create_user_avatar_thumbnails
. saleor.core.analytics.ga_report
. saleor.core.utils.update_conversion_rates_from_openexchangerates
. saleor.dashboard.emails.send_promote_customer_to_staff_email
. saleor.dashboard.emails.send_set_password_customer_email
. saleor.dashboard.emails.send_set_password_staff_email
. saleor.order.emails.send_fulfillment_confirmation
. saleor.order.emails.send_fulfillment_update
. saleor.order.emails.send_order_confirmation
. saleor.order.emails.send_payment_confirmation
. saleor.product.tasks.update_variants_names
. saleor.product.thumbnails.create_category_background_image_thumbnails
. saleor.product.thumbnails.create_collection_background_image_thumbnails
. saleor.product.thumbnails.create_product_thumbnails
[2019-04-20 17:38:38,001: INFO/MainProcess] Connected to redis://redis:6379/1
[2019-04-20 17:38:38,919: INFO/MainProcess] mingle: searching for neighbors
[2019-04-20 17:38:40,690: INFO/MainProcess] mingle: all alone
[2019-04-20 17:38:42,946: WARNING/MainProcess] /usr/local/lib/python3.7/site-packages/\
celery/fixups/django.py:202: UserWarning: Using settings.DEBUG leads to a memory \
leak, never use this setting in production environments!\
warnings.warn('Using settings.DEBUG leads to a memory leak, never '
[2019-04-20 17:38:42,955: INFO/MainProcess] celery@0abb19d50414 ready.
service: celery
runtime: python37
instance_class: B1
entrypoint: celery -A saleor worker --app=saleor.celeryconf:app --loglevel=info
basic_scaling:
max_instances: 1
idle_timeout: 10m
This documentation is mapped under Mapping and licensed under Apache License, Version 2.0.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright (c) 2018-2020 Chetabahana Project
You are on the wiki of our repo
- Site
- Main
- Project
- Pratinjau
- Pola Dasar
- Bagan Kerja
- Field Tutorial
- Cloud Site API
- Google Ads API
- Cloud Tasks API
- Google Trends API
- Basis Implementasi
- Beranda
- Perangkat
- Pasang Aplikasi
- Penyetelan Aplikasi
- Menyiapkan Frontend
- Menjalankan Backend API
- Menjalankan Toko