<?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: sada </title>
    <description>The latest articles on DEV Community by sada  (@sadanand__07).</description>
    <link>https://dev.to/sadanand__07</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3994849%2F199b36ab-606c-4dda-b75f-7f1e834e59a6.png</url>
      <title>DEV Community: sada </title>
      <link>https://dev.to/sadanand__07</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sadanand__07"/>
    <language>en</language>
    <item>
      <title>I built a production ML inference API with FastAPI, Celery and Docker — here's the full architecture</title>
      <dc:creator>sada </dc:creator>
      <pubDate>Sun, 21 Jun 2026 03:51:35 +0000</pubDate>
      <link>https://dev.to/sadanand__07/i-built-a-production-ml-inference-api-with-fastapi-celery-and-docker-heres-the-full-26lk</link>
      <guid>https://dev.to/sadanand__07/i-built-a-production-ml-inference-api-with-fastapi-celery-and-docker-heres-the-full-26lk</guid>
      <description>&lt;p&gt;Para 1 — The problem&lt;br&gt;
  "Most ML tutorials end at model.fit(). &lt;br&gt;
   Getting a model into production is a completely &lt;br&gt;
   different skill. Here's how I built a real async &lt;br&gt;
   inference microservice."&lt;/p&gt;

&lt;p&gt;Para 2 — Architecture diagram&lt;br&gt;
  Paste the ASCII diagram from your ARCHITECTURE.md&lt;/p&gt;

&lt;p&gt;Para 3 — The three components&lt;br&gt;
  FastAPI handles HTTP (why async matters)&lt;br&gt;
  Celery handles background work (why not just threads)&lt;br&gt;
  Redis handles both queue and results (why one service)&lt;/p&gt;

&lt;p&gt;Para 4 — Key code snippet (predict_async endpoint)&lt;br&gt;
  Show 15 lines of code — the async endpoint that &lt;br&gt;
  dispatches to Celery and returns task_id immediately&lt;/p&gt;

&lt;p&gt;Para 5 — Testing strategy&lt;br&gt;
  "I used in-memory Celery eager mode so tests &lt;br&gt;
   run without Redis. Here's the conftest pattern."&lt;br&gt;
  Show 10 lines of conftest.py&lt;/p&gt;

&lt;p&gt;Para 6 — The result&lt;br&gt;
  Screenshot of the UI dashboard&lt;br&gt;
  Screenshot of 47 tests passing&lt;/p&gt;

&lt;p&gt;Closing line:&lt;br&gt;
  "If you want the full source code with Docker, &lt;br&gt;
   CI pipeline, Postman collection and deployment &lt;br&gt;
   guide, I packaged it here: [Gumroad link]"&lt;/p&gt;

</description>
      <category>api</category>
      <category>architecture</category>
      <category>machinelearning</category>
      <category>python</category>
    </item>
  </channel>
</rss>
