From 2e389b0b90f34d795e4bafc43d621955c05850a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Sun, 6 Nov 2016 15:15:48 +0100 Subject: Reordered documentation --- docs/en/developer/asynchronous.rst | 159 +++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 docs/en/developer/asynchronous.rst (limited to 'docs/en/developer/asynchronous.rst') diff --git a/docs/en/developer/asynchronous.rst b/docs/en/developer/asynchronous.rst new file mode 100644 index 00000000..6a991cf6 --- /dev/null +++ b/docs/en/developer/asynchronous.rst @@ -0,0 +1,159 @@ +Asynchronous tasks +================== + +In order to launch asynchronous tasks (useful for huge imports for example), we can use RabbitMQ or Redis. + +Install RabbitMQ for asynchronous tasks +--------------------------------------- + +Requirements +^^^^^^^^^^^^ + +You need to have RabbitMQ installed on your server. + +Installation +^^^^^^^^^^^^ + +.. code:: bash + + wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc + apt-key add rabbitmq-signing-key-public.asc + apt-get update + apt-get install rabbitmq-server + +Configuration and launch +^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code:: bash + + rabbitmq-plugins enable rabbitmq_management # (useful to have a web interface, available at http://localhost:15672/ (guest/guest) + rabbitmq-server -detached + +Stop RabbitMQ +^^^^^^^^^^^^^ + +.. code:: bash + + rabbitmqctl stop + + +Configure RabbitMQ in wallabag +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Edit your ``app/config/parameters.yml`` file to edit RabbitMQ configuration. The default one should be ok: + +.. code:: yaml + + rabbitmq_host: localhost + rabbitmq_port: 5672 + rabbitmq_user: guest + rabbitmq_password: guest + +Enable RabbitMQ in wallabag +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In internal settings, in the **Import** section, enable RabbitMQ (with the value 1). + +Launch RabbitMQ consumer +^^^^^^^^^^^^^^^^^^^^^^^^ + +Depending on which service you want to import from you need to enable one (or many if you want to support many) cron job: + +.. code:: bash + + # for Pocket import + bin/console rabbitmq:consumer -e=prod import_pocket -w + + # for Readability import + bin/console rabbitmq:consumer -e=prod import_readability -w + + # for Instapaper import + bin/console rabbitmq:consumer -e=prod import_instapaper -w + + # for wallabag v1 import + bin/console rabbitmq:consumer -e=prod import_wallabag_v1 -w + + # for wallabag v2 import + bin/console rabbitmq:consumer -e=prod import_wallabag_v2 -w + + # for Firefox import + bin/console rabbitmq:consumer -e=prod import_firefox -w + + # for Chrome import + bin/console rabbitmq:consumer -e=prod import_chrome -w + +Install Redis for asynchronous tasks +------------------------------------ + +In order to launch asynchronous tasks (useful for huge imports for example), we can use Redis. + +Requirements +^^^^^^^^^^^^ + +You need to have Redis installed on your server. + +Installation +^^^^^^^^^^^^ + +.. code:: bash + + apt-get install redis-server + +Launch +^^^^^^ + +The server might be already running after installing, if not you can launch it using: + +.. code:: bash + + redis-server + + +Configure Redis in wallabag +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Edit your ``app/config/parameters.yml`` file to edit Redis configuration. The default one should be ok: + +.. code:: yaml + + redis_host: localhost + redis_port: 6379 + +Enable Redis in wallabag +^^^^^^^^^^^^^^^^^^^^^^^^ + +In internal settings, in the **Import** section, enable Redis (with the value 1). + +Launch Redis consumer +^^^^^^^^^^^^^^^^^^^^^ + +Depending on which service you want to import from you need to enable one (or many if you want to support many) cron job: + +.. code:: bash + + # for Pocket import + bin/console wallabag:import:redis-worker -e=prod pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log + + # for Readability import + bin/console wallabag:import:redis-worker -e=prod readability -vv >> /path/to/wallabag/var/logs/redis-readability.log + + # for Instapaper import + bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log + + # for wallabag v1 import + bin/console wallabag:import:redis-worker -e=prod wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log + + # for wallabag v2 import + bin/console wallabag:import:redis-worker -e=prod wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log + + # for Firefox import + bin/console wallabag:import:redis-worker -e=prod firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log + + # for Chrome import + bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log + +If you want to launch the import only for some messages and not all, you can specify this number (here 12) and the worker will stop right after the 12th message : + +.. code:: bash + + bin/console wallabag:import:redis-worker -e=prod pocket -vv --maxIterations=12 -- cgit v1.2.3