<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: testacc127000</title>
    <description>The latest articles on DEV Community by testacc127000 (@testacc127000).</description>
    <link>https://dev.to/testacc127000</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F822197%2Fcffdda25-95fb-4ef7-b529-ca1554646880.png</url>
      <title>DEV Community: testacc127000</title>
      <link>https://dev.to/testacc127000</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/testacc127000"/>
    <language>en</language>
    <item>
      <title>Celery part 1</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Tue, 22 Nov 2022 11:33:04 +0000</pubDate>
      <link>https://dev.to/testacc127000/celery-part-1-4892</link>
      <guid>https://dev.to/testacc127000/celery-part-1-4892</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;What is *&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;Asynchronous Processing?&lt;/strong&gt;*&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Web applications undoubtedly have a great deal of code that executes as part of the HTTP request/response cycle. This is suitable for faster tasks that can be done within hundreds of milliseconds or less.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;However, any processing that would take more than a second or two will ultimately be far too slow for synchronous execution. In addition, there is often processing that needs to be scheduled in the future and/or processing that needs to affect an external service.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vFxWmGdC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpzahmdxcx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vFxWmGdC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpzahmdxcx.png" alt="" width="495" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In these cases when we have a task that needs to execute but that is not a candidate for synchronous processing, the best course of action is to move the execution outside the request/response cycle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Specifically, we can have the synchronous web app simply notify another separate program that certain processing needs to be done at a later time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now, instead of the task running as a part of the actual web response, the processing runs separately so that the web application can respond quickly to the request.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NZJS1A-X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpyws1dqnx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NZJS1A-X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpyws1dqnx.png" alt="" width="377" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here comes the need for Task Queue&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;What are task queue/message queues?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task queues manage background work that must be executed outside the usual HTTP request-response cycle.&lt;/li&gt;
&lt;li&gt;Tasks are handled asynchronously either because they are not initiated by an HTTP request or because they are long-running jobs that would dramatically reduce the performance of an HTTP response.&lt;/li&gt;
&lt;li&gt;At the simplest level, a task queue/message queue is a way for applications and discrete components to send messages to one another in order to reliably communicate.&lt;/li&gt;
&lt;li&gt;Message queues are typically (but not always) ‘brokers’ that facilitate message passing by providing a protocol or interface that other services can access.&lt;/li&gt;
&lt;li&gt;This interface connects &lt;strong&gt;producers **which create messages and the &lt;/strong&gt;consumers **which then process them.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XfLwVmSD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmprv8ymsy_.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XfLwVmSD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmprv8ymsy_.png" alt="" width="522" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within the context of a web application, one common case is that the &lt;strong&gt;producer&lt;/strong&gt;&lt;br&gt;
 is a client application (i.e Rails or Sinatra) that creates messages based on interactions from the user (i.e user signing up).&lt;/p&gt;

&lt;p&gt;The consumer in that case is typically daemon processes (i.e rake tasks) that can then process the arriving messages.&lt;/p&gt;

&lt;p&gt;Asynchronous task queues are tools to allow pieces of a software program to run in a separate machine/process.&lt;/p&gt;

&lt;p&gt;It is often used in web architectures as a way to delegate long-lasting tasks while quickly answering requests.&lt;/p&gt;

&lt;p&gt;The delegated task can trigger an action such as sending an email to the user or simply updating data internally in the system when it finishes executing.&lt;/p&gt;

&lt;p&gt;Task queues are used as a mechanism to distribute work across threads or machines.&lt;/p&gt;

&lt;p&gt;A task queue’s input is a unit of work called a task&lt;/p&gt;

&lt;p&gt;Dedicated worker processes constantly monitor task queues for new work to perform.&lt;/p&gt;

&lt;p&gt;Celery communicates via messages, usually using a broker to mediate between clients and workers.&lt;/p&gt;

&lt;p&gt;To initiate a task the client adds a message to the queue, the broker then delivers that message to a worker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Need for celery?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Offloading work&lt;/strong&gt; from your app to distributed processes that can run independently of your app.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Scheduling task execution&lt;/strong&gt; at a specific time, sometimes as recurring events.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What is celery?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As per definition, Celery is a powerful, production-ready asynchronous job queue, which allows you to run time-consuming Python functions in the background. A Celery powered application can respond to user requests quickly, while long-running tasks are passed onto the queue. In this article we will demonstrate how to add Celery to a Django application using Redis.&lt;/p&gt;

&lt;p&gt;Celery uses a *broker *to pass messages between your application and Celery worker processes.&lt;/p&gt;

&lt;p&gt;Celery aims to provide a quick interface for sending messages to its distributed task queue.&lt;/p&gt;

&lt;p&gt;Celery-Django Workflow:&lt;/p&gt;

&lt;p&gt;Celery decreases performance load by running part of the functionality as postponed tasks either on the same server as other tasks or on a different server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Basic functionalities of Celery:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Define tasks as python functions.&lt;/p&gt;

&lt;p&gt;Listen to a message broker for new tasks.&lt;/p&gt;

&lt;p&gt;Assign the tasks to workers.&lt;/p&gt;

&lt;p&gt;Monitor the workers and tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The a&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;rchitecture of Celery:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The internal working of Celery can easily be stated as the Producer/Consumer model. Producers place the jobs in a queue, and consumers are ready for them from the queue. Given this, at high-level Celery has 3 main components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1] **&lt;/strong&gt;Producers:**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Producers&lt;/strong&gt; are commonly the ‘web nodes’, the web service process, handling the web request. During the request processing, tasks are delegated to Celery i.e. pushed into the task queue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2] **&lt;/strong&gt;Queue:**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Queue&lt;/strong&gt; is a broker, which basically helps passing tasks from web applications to Celery worker(s). Celery has full support for RabbitMQ and Redis, and also supports Amazon SQS and Zookeeper but with limited capabilities&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3] **&lt;/strong&gt;Consumers:**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consumers&lt;/strong&gt; are ‘&lt;strong&gt;worker&lt;/strong&gt; nodes’, listening to queue head, whenever a task is published, they consume and execute it. Workers can also publish back to the queue, triggering another tasks, hence they can also behave as producers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Main points:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using celery you can assign a task to some worker and continue to your routine.&lt;/p&gt;

&lt;p&gt;You can put everything i.e is taking time out of request response cycle.&lt;/p&gt;

&lt;p&gt;Can be used for,&lt;/p&gt;

&lt;p&gt;Sending emails.&lt;/p&gt;

&lt;p&gt;Sending push notifications.&lt;/p&gt;

&lt;p&gt;Resizing and editing images.&lt;/p&gt;

&lt;p&gt;Taking backups.&lt;/p&gt;

&lt;p&gt;Data sync duties.&lt;/p&gt;



</description>
    </item>
    <item>
      <title>Celery part 1</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Tue, 22 Nov 2022 11:19:32 +0000</pubDate>
      <link>https://dev.to/testacc127000/celery-part-1-4iep</link>
      <guid>https://dev.to/testacc127000/celery-part-1-4iep</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;What is *&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;Asynchronous Processing?&lt;/strong&gt;*&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Web applications undoubtedly have a great deal of code that executes as part of the HTTP request/response cycle. This is suitable for faster tasks that can be done within hundreds of milliseconds or less.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;However, any processing that would take more than a second or two will ultimately be far too slow for synchronous execution. In addition, there is often processing that needs to be scheduled in the future and/or processing that needs to affect an external service.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PYTxyAIx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmphpuq6jbd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PYTxyAIx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmphpuq6jbd.png" alt="" width="495" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In these cases when we have a task that needs to execute but that is not a candidate for synchronous processing, the best course of action is to move the execution outside the request/response cycle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Specifically, we can have the synchronous web app simply notify another separate program that certain processing needs to be done at a later time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now, instead of the task running as a part of the actual web response, the processing runs separately so that the web application can respond quickly to the request.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n5bYucw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpq7_cp4um.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n5bYucw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpq7_cp4um.png" alt="" width="377" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here comes the need for Task Queue&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;What are task queue/message queues?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task queues manage background work that must be executed outside the usual HTTP request-response cycle.&lt;/li&gt;
&lt;li&gt;Tasks are handled asynchronously either because they are not initiated by an HTTP request or because they are long-running jobs that would dramatically reduce the performance of an HTTP response.&lt;/li&gt;
&lt;li&gt;At the simplest level, a task queue/message queue is a way for applications and discrete components to send messages to one another in order to reliably communicate.&lt;/li&gt;
&lt;li&gt;Message queues are typically (but not always) ‘brokers’ that facilitate message passing by providing a protocol or interface that other services can access.&lt;/li&gt;
&lt;li&gt;This interface connects &lt;strong&gt;producers **which create messages and the &lt;/strong&gt;consumers **which then process them.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BxrVTdx9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpz8w9bbwe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BxrVTdx9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpz8w9bbwe.png" alt="" width="522" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within the context of a web application, one common case is that the &lt;strong&gt;producer&lt;/strong&gt;&lt;br&gt;
 is a client application (i.e Rails or Sinatra) that creates messages based on interactions from the user (i.e user signing up).&lt;/p&gt;

&lt;p&gt;The consumer in that case is typically daemon processes (i.e rake tasks) that can then process the arriving messages.&lt;/p&gt;

&lt;p&gt;Asynchronous task queues are tools to allow pieces of a software program to run in a separate machine/process.&lt;/p&gt;

&lt;p&gt;It is often used in web architectures as a way to delegate long-lasting tasks while quickly answering requests.&lt;/p&gt;

&lt;p&gt;The delegated task can trigger an action such as sending an email to the user or simply updating data internally in the system when it finishes executing.&lt;/p&gt;

&lt;p&gt;Task queues are used as a mechanism to distribute work across threads or machines.&lt;/p&gt;

&lt;p&gt;A task queue’s input is a unit of work called a task&lt;/p&gt;

&lt;p&gt;Dedicated worker processes constantly monitor task queues for new work to perform.&lt;/p&gt;

&lt;p&gt;Celery communicates via messages, usually using a broker to mediate between clients and workers.&lt;/p&gt;

&lt;p&gt;To initiate a task the client adds a message to the queue, the broker then delivers that message to a worker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Need for celery?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Offloading work&lt;/strong&gt; from your app to distributed processes that can run independently of your app.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Scheduling task execution&lt;/strong&gt; at a specific time, sometimes as recurring events.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What is celery?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As per definition, Celery is a powerful, production-ready asynchronous job queue, which allows you to run time-consuming Python functions in the background. A Celery powered application can respond to user requests quickly, while long-running tasks are passed onto the queue. In this article we will demonstrate how to add Celery to a Django application using Redis.&lt;/p&gt;

&lt;p&gt;Celery uses a *broker *to pass messages between your application and Celery worker processes.&lt;/p&gt;

&lt;p&gt;Celery aims to provide a quick interface for sending messages to its distributed task queue.&lt;/p&gt;

&lt;p&gt;Celery-Django Workflow:&lt;/p&gt;

&lt;p&gt;Celery decreases performance load by running part of the functionality as postponed tasks either on the same server as other tasks or on a different server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Basic functionalities of Celery:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Define tasks as python functions.&lt;/p&gt;

&lt;p&gt;Listen to a message broker for new tasks.&lt;/p&gt;

&lt;p&gt;Assign the tasks to workers.&lt;/p&gt;

&lt;p&gt;Monitor the workers and tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The a&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;rchitecture of Celery:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oSnR0WV8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/v1/data:image/gif%3Bbase64%2CR0lGODlhAQABAIAAAP//wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The internal working of Celery can easily be stated as the Producer/Consumer model. Producers place the jobs in a queue, and consumers are ready for them from the queue. Given this, at high-level Celery has 3 main components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1] **&lt;/strong&gt;Producers:**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Producers&lt;/strong&gt; are commonly the ‘web nodes’, the web service process, handling the web request. During the request processing, tasks are delegated to Celery i.e. pushed into the task queue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2] **&lt;/strong&gt;Queue:**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Queue&lt;/strong&gt; is a broker, which basically helps passing tasks from web applications to Celery worker(s). Celery has full support for RabbitMQ and Redis, and also supports Amazon SQS and Zookeeper but with limited capabilities&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3] **&lt;/strong&gt;Consumers:**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consumers&lt;/strong&gt; are ‘&lt;strong&gt;worker&lt;/strong&gt; nodes’, listening to queue head, whenever a task is published, they consume and execute it. Workers can also publish back to the queue, triggering another tasks, hence they can also behave as producers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Main points:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using celery you can assign a task to some worker and continue to your routine.&lt;/p&gt;

&lt;p&gt;You can put everything i.e is taking time out of request response cycle.&lt;/p&gt;

&lt;p&gt;Can be used for,&lt;/p&gt;

&lt;p&gt;Sending emails.&lt;/p&gt;

&lt;p&gt;Sending push notifications.&lt;/p&gt;

&lt;p&gt;Resizing and editing images.&lt;/p&gt;

&lt;p&gt;Taking backups.&lt;/p&gt;

&lt;p&gt;Data sync duties.&lt;/p&gt;



</description>
    </item>
    <item>
      <title>Updated blog structure testing 2</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Tue, 29 Mar 2022 10:08:59 +0000</pubDate>
      <link>https://dev.to/testacc127000/updated-blog-structure-testing-2-2hii</link>
      <guid>https://dev.to/testacc127000/updated-blog-structure-testing-2-2hii</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;p&gt;Update feature testing after updating blog structure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Final Checking on changed blog structure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l7jVcPuT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp2pkuw_ok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l7jVcPuT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp2pkuw_ok.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QhPXLBy4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp214o61vt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QhPXLBy4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp214o61vt.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>uat</category>
    </item>
    <item>
      <title>Updated blog structure testing 2</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Tue, 29 Mar 2022 07:40:13 +0000</pubDate>
      <link>https://dev.to/testacc127000/updated-blog-structure-testing-2-2a7f</link>
      <guid>https://dev.to/testacc127000/updated-blog-structure-testing-2-2a7f</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;p&gt;Update feature testing after updating blog structure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Change database structure on devto&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Et2OMyq2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpiz_1h7pw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Et2OMyq2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpiz_1h7pw.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v7pEXJD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpse6cef_y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v7pEXJD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpse6cef_y.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>uat</category>
    </item>
    <item>
      <title>Updated blog structure testing</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Wed, 23 Mar 2022 06:58:22 +0000</pubDate>
      <link>https://dev.to/testacc127000/updated-blog-structure-testing-2nlb</link>
      <guid>https://dev.to/testacc127000/updated-blog-structure-testing-2nlb</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;p&gt;Update feature testing after updating blog structure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting up Razorpay account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--epwQDj3v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpm__lg_tw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--epwQDj3v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpm__lg_tw.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UeYSEomM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmphtli7hwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UeYSEomM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmphtli7hwn.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>uat</category>
    </item>
    <item>
      <title>Django custom commands</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Wed, 23 Mar 2022 06:56:38 +0000</pubDate>
      <link>https://dev.to/testacc127000/django-custom-commands-1efi</link>
      <guid>https://dev.to/testacc127000/django-custom-commands-1efi</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting up Razorpay account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--inKAb_pj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpntf9vd9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--inKAb_pj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpntf9vd9q.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E9OXLKOb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp5ofvg6vz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E9OXLKOb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp5ofvg6vz.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>testing</category>
    </item>
    <item>
      <title>Updated format testing (uat testing)</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Wed, 23 Mar 2022 06:19:58 +0000</pubDate>
      <link>https://dev.to/testacc127000/updated-format-testing-uat-testing-1fep</link>
      <guid>https://dev.to/testacc127000/updated-format-testing-uat-testing-1fep</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;p&gt;Update feature testing after updating blog structure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting up Razorpay account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RM1KgnCO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpmdj0mlva.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RM1KgnCO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpmdj0mlva.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F6h4QbYr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpx35brs5m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F6h4QbYr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpx35brs5m.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>uat</category>
    </item>
    <item>
      <title>Updated blog testing for update feature</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Wed, 23 Mar 2022 06:19:07 +0000</pubDate>
      <link>https://dev.to/testacc127000/updated-blog-testing-for-update-feature-2pc4</link>
      <guid>https://dev.to/testacc127000/updated-blog-testing-for-update-feature-2pc4</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting up Razorpay account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--unD2Gber--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpbkjbyiba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--unD2Gber--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpbkjbyiba.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fehm-pD3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpe24rccqh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fehm-pD3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpe24rccqh.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>testing</category>
    </item>
    <item>
      <title>Updated format testing (uat testing)</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Mon, 21 Mar 2022 14:29:25 +0000</pubDate>
      <link>https://dev.to/testacc127000/updated-format-testing-uat-testing-1ofk</link>
      <guid>https://dev.to/testacc127000/updated-format-testing-uat-testing-1ofk</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;p&gt;Update feature testing after updating blog structure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting up Razorpay account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/Nishant127/13898538d35a024b4d93a592b1b4a6ea"&gt;https://gist.github.com/Nishant127/13898538d35a024b4d93a592b1b4a6ea&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pCKpPYF---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpwz0vil4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pCKpPYF---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpwz0vil4j.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--osOQQqUv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpje031c1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--osOQQqUv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpje031c1t.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>uat</category>
    </item>
    <item>
      <title>Updated blog testing for update feature</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Mon, 21 Mar 2022 14:28:24 +0000</pubDate>
      <link>https://dev.to/testacc127000/updated-blog-testing-33bf</link>
      <guid>https://dev.to/testacc127000/updated-blog-testing-33bf</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting up Razorpay account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wQlQ0VqB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp3pywtx3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wQlQ0VqB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp3pywtx3s.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0WwvNvW7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp_bolx_yr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0WwvNvW7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmp_bolx_yr.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>testing</category>
    </item>
    <item>
      <title>Updated blog testing</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Mon, 21 Mar 2022 14:23:51 +0000</pubDate>
      <link>https://dev.to/testacc127000/updated-blog-testing-1m8b</link>
      <guid>https://dev.to/testacc127000/updated-blog-testing-1m8b</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting up Razorpay account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a5AdXw-2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpe9gt9aqg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a5AdXw-2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpe9gt9aqg.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9_wGcRYj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpzkq_d8pd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9_wGcRYj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpzkq_d8pd.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>testing</category>
    </item>
    <item>
      <title>All format testing (uat testing)</title>
      <dc:creator>testacc127000</dc:creator>
      <pubDate>Mon, 21 Mar 2022 13:54:03 +0000</pubDate>
      <link>https://dev.to/testacc127000/all-format-testing-uat-testing-3pdm</link>
      <guid>https://dev.to/testacc127000/all-format-testing-uat-testing-3pdm</guid>
      <description>&lt;h1&gt;
  
  
  Steps to integrate Razorpay
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting up Razorpay account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing API keys in settings.py&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Razorpay library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating order using Razorpay API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating order at backend and also creating Razorpay order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show template&lt;/li&gt;
&lt;li&gt;render to payment.html&lt;/li&gt;
&lt;li&gt;Get info of call back URL&lt;/li&gt;
&lt;li&gt;Done with creating an order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Uploading a File&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are three ways you can upload a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;From an &lt;code&gt;Object&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a &lt;code&gt;Bucket&lt;/code&gt; instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case, you have to provide the &lt;code&gt;Filename&lt;/code&gt;, which is the path of the file you want to upload. You’ll now explore the three alternatives. Feel free to pick whichever you like most to upload the &lt;code&gt;first_file_name&lt;/code&gt; to S3.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rYx3S9Gc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpyi6xdd3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rYx3S9Gc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpyi6xdd3k.png" alt="" width="602" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0ZDyQc1T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpl6nsq0ea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0ZDyQc1T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://notionpack-uploads.s3.amazonaws.com/blog_images/tmp/tmpl6nsq0ea.png" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Testing call out block&lt;/p&gt;

</description>
      <category>uat</category>
    </item>
  </channel>
</rss>
