HTTP 202 স্বীকৃত (HTTP / 1.1)
আপনি HTTP 202 Acceptedস্থিতি খুঁজছেন । আরএফসি 2616 দেখুন :
প্রক্রিয়াজাতকরণের জন্য অনুরোধটি গ্রহণ করা হয়েছে, তবে প্রক্রিয়াজাতকরণ শেষ হয়নি।
HTTP 102 প্রসেসিং (ওয়েবডিএভি)
আরএফসি 2518 ব্যবহারের পরামর্শ দেয় HTTP 102 Processing:
১০২ (প্রসেসিং) স্থিতি কোডটি একটি অন্তর্বর্তীকালীন প্রতিক্রিয়া যা ক্লায়েন্টকে জানাতে ব্যবহৃত হয় যে সার্ভারটি সম্পূর্ণ অনুরোধটি স্বীকার করেছে, তবে এটি এখনও সম্পূর্ণ করেনি।
তবে এটি একটি সতর্কতা আছে:
অনুরোধটি শেষ হওয়ার পরে সার্ভারটি চূড়ান্ত প্রতিক্রিয়া প্রেরণ করবে।
আমি শেষ বাক্যটির ব্যাখ্যা কীভাবে করব তা নিশ্চিত নই। প্রসেসিং চলাকালীন সার্ভারকে কিছু পাঠানো এড়ানো উচিত এবং কেবলমাত্র সমাপ্তির পরে প্রতিক্রিয়া জানাতে হবে ? বা কেবলমাত্র প্রক্রিয়াটি শেষ হলেই প্রতিক্রিয়া শেষ করতে বাধ্য করে ? আপনি অগ্রগতি রিপোর্ট করতে চাইলে এটি কার্যকর হতে পারে। HTTP 102 প্রেরণ করুন এবং বাইট বাই বা (লাইনে লাইন) বাইশ ফ্ল্যাশ প্রতিক্রিয়া প্রেরণ করুন।
উদাহরণস্বরূপ, দীর্ঘ কিন্তু লিনিয়ার প্রক্রিয়াটির জন্য, আপনি প্রতিটি চরিত্রের পরে ফ্লাশ করে একশ ডট প্রেরণ করতে পারেন। যদি ক্লায়েন্ট পক্ষ (যেমন একটি জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন) জানে যে এটি ঠিক 100 টি অক্ষর আশা করতে পারে তবে এটি ব্যবহারকারীর কাছে প্রদর্শন করার জন্য এটি একটি অগ্রগতি বারের সাথে মিলিয়ে দিতে পারে।
আর একটি উদাহরণ এমন একটি প্রক্রিয়া সম্পর্কিত যা বেশ কয়েকটি অ-রৈখিক পদক্ষেপ নিয়ে গঠিত concerns প্রতিটি পদক্ষেপের পরে, আপনি একটি লগ বার্তা ফ্লাশ করতে পারেন যা শেষ পর্যন্ত ব্যবহারকারীর কাছে প্রদর্শিত হবে, যাতে শেষ ব্যবহারকারীটি প্রক্রিয়াটি কীভাবে চলছে তা জানতে পারে।
প্রগতিশীল ফ্লাশিং সহ সমস্যাগুলি
মনে রাখবেন যে এই কৌশলটির দক্ষতা থাকা সত্ত্বেও আমি এটির প্রস্তাব দেব না । এর অন্যতম কারণ হ'ল এটি সংযোগটি উন্মুক্ত থাকতে বাধ্য করে, যা পরিষেবার প্রাপ্যতার ক্ষেত্রে ক্ষতি করতে পারে এবং ভালভাবে স্কেল হয় না।
আরও ভাল পদ্ধতির সাথে সাড়া দেওয়া HTTP 202 Acceptedএবং হয় প্রক্রিয়াটি শেষ হয়েছে কিনা তা নির্ধারণ করার জন্য ব্যবহারকারীকে পরে আপনার কাছে ফিরে আসতে দেওয়া (উদাহরণস্বরূপ বারবার কোনও প্রদত্ত ইউআরআই কল করে যেমন /process/resultHTTP 404 পাওয়া যায় নি বা প্রক্রিয়া না হওয়া পর্যন্ত HTTP 409 সংঘাতের সাথে প্রতিক্রিয়া জানায়) শেষ হয়ে যায় এবং ফলাফল প্রস্তুত হয়) বা আপনি যদি কোনও বার্তা সারি পরিষেবা ( উদাহরণস্বরূপ ) বা ওয়েবসকেটের মাধ্যমে ক্লায়েন্টকে কল করতে সক্ষম হন তবে প্রসেসিংয়ের সময় ব্যবহারকারীকে অবহিত করুন ।
ব্যবহারিক উদাহরণ
এমন কোনও ওয়েব পরিষেবা কল্পনা করুন যা ভিডিওগুলিকে রূপান্তর করে। প্রবেশের স্থানটি হ'ল:
POST /video/convert
যা HTTP অনুরোধ থেকে একটি ভিডিও ফাইল নেয় এবং এটি দিয়ে কিছু যাদু করে। আসুন কল্পনা করুন যে যাদুটি সিপিইউ-নিবিড়, তাই অনুরোধের স্থানান্তরকালে এটি রিয়েল-টাইমে করা যায় না। এর অর্থ এই যে ফাইলটি স্থানান্তরিত হয়ে গেলে সার্ভারটি HTTP 202 Acceptedকিছু জেএসওএন সামগ্রী দিয়ে একটি প্রতিক্রিয়া জানাবে যার অর্থ হ্যাঁ, আমি আপনার ভিডিও পেয়েছি এবং আমি এতে কাজ করছি; এটি ভবিষ্যতে কোথাও প্রস্তুত হবে এবং আইডি 123 এর মাধ্যমে পাওয়া যাবে ”
প্রসেসিং শেষ হওয়ার পরে ক্লায়েন্টের কাছে একটি বার্তা কাতারে সাবস্ক্রাইব হওয়ার সম্ভাবনা রয়েছে। এটি শেষ হয়ে গেলে, ক্লায়েন্ট প্রক্রিয়াজাত ভিডিওটি এখানে যেতে পারেন:
GET /video/download/123
যা একটি বাড়ে HTTP 200।
বিজ্ঞপ্তি পাওয়ার আগে ক্লায়েন্ট যদি এই ইউআরআই জিজ্ঞাসা করে তবে কি হবে? ঠিক আছে, সার্ভারটি HTTP 404যেহেতু প্রতিক্রিয়া জানাবে , প্রকৃতপক্ষে, ভিডিওটি এখনও নেই। এটি বর্তমানে প্রস্তুত হতে পারে। এটি কখনও অনুরোধ করা হতে পারে না। এটি অতীতে কিছু সময় থাকতে পারে এবং পরে তা মুছে ফেলা হতে পারে। সব মিলিয়ে ফলাফলটি পাওয়া যায় না।
এখন, ক্লায়েন্ট যদি কেবল চূড়ান্ত ভিডিও সম্পর্কেই নয়, তবে অগ্রগতি সম্পর্কেও চিন্তা করে (তবে কোনও বার্তা কিউ পরিষেবা বা অনুরূপ কোনও ব্যবস্থা না থাকলে আরও বেশি গুরুত্বপূর্ণ হবে)?
এই ক্ষেত্রে, আপনি অন্য একটি শেষ পয়েন্ট ব্যবহার করতে পারেন:
GET /video/status/123
যার ফলস্বরূপ এর প্রতিক্রিয়া হবে:
HTTP 200
{
"id": 123,
"status": "queued",
"priority": 2,
"progress-percent": 0,
"submitted-utc-time": "2016-04-19T13:59:22"
}
অনুরোধটি বারবার করা এবং ততক্ষণ অগ্রগতি দেখাবে:
HTTP 200
{
"id": 123,
"status": "done",
"progress-percent": 100,
"submitted-utc-time": "2016-04-19T13:59:22"
}
এই তিন ধরণের অনুরোধের মধ্যে পার্থক্য করা অত্যন্ত গুরুত্বপূর্ণ:
POST /video/convertএকটি কাজ সারি। এটি কেবল একবার কল করা উচিত: এটিকে আবার কল করা অতিরিক্ত কাজ সারি করে।
GET /video/download/123অপারেশনের ফলাফল নিয়ে উদ্বেগ : সংস্থানটি ভিডিও। প্রক্রিয়াজাতকরণ - অনুরোধের পূর্বে এবং স্বতন্ত্রভাবে অনুরোধের আসল ফলাফল প্রস্তুত করার জন্য হুডের নীচে যা ঘটেছিল তা এখানে অপ্রাসঙ্গিক। এটি একবার বা একাধিকবার বলা যেতে পারে।
GET /video/status/123প্রতি সেমি প্রক্রিয়াজাতকরণ উদ্বেগ । এটি কিছু কিউ না। ফলস্বরূপ ভিডিওটি এটি যত্ন করে না। সম্পদ প্রক্রিয়াকরণ নিজেই। এটি একবার বা একাধিকবার বলা যেতে পারে।