add Prometheus metrics & API metrics endpoint to get stats

This commit is contained in:
mhdzumair
2024-05-01 12:39:49 +05:30
parent 0388b976f6
commit f73b1e436f
10 changed files with 423 additions and 286 deletions
+1
View File
@@ -38,6 +38,7 @@ aioqbt = {git = "git+https://github.com/mhdzumair/aioqbt.git"}
aiowebdav = "*"
m3u-ipytv = "*"
python-multipart = "*"
prometheus-client = "*"
[dev-packages]
pysocks = "*"
Generated
+249 -271
View File
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "564235b3bd38faff4a523651b7e73230c5d380d79407f23f34db7a51a1ed2163"
"sha256": "a2f95c2d16283572e596f5ed060f6cf797e361f3116228f57c4794e0f4fa9d5d"
},
"pipfile-spec": 6,
"requires": {
@@ -26,85 +26,85 @@
},
"aiohttp": {
"hashes": [
"sha256:0593822dcdb9483d41f12041ff7c90d4d1033ec0e880bcfaf102919b715f47f1",
"sha256:10afd99b8251022ddf81eaed1d90f5a988e349ee7d779eb429fb07b670751e8c",
"sha256:17e7c051f53a0d2ebf33013a9cbf020bb4e098c4bc5bce6f7b0c962108d97eab",
"sha256:221204dbda5ef350e8db6287937621cf75e85778b296c9c52260b522231940ed",
"sha256:2506d9f7a9b91033201be9ffe7d89c6a54150b0578803cce5cb84a943d075bc3",
"sha256:268ba22d917655d1259af2d5659072b7dc11b4e1dc2cb9662fdd867d75afc6a4",
"sha256:2bd9d334412961125e9f68d5b73c1d0ab9ea3f74a58a475e6b119f5293eee7ba",
"sha256:305edae1dea368ce09bcb858cf5a63a064f3bff4767dec6fa60a0cc0e805a1d3",
"sha256:32dc814ddbb254f6170bca198fe307920f6c1308a5492f049f7f63554b88ef36",
"sha256:35d78076736f4a668d57ade00c65d30a8ce28719d8a42471b2a06ccd1a2e3063",
"sha256:3b2feaf1b7031ede1bc0880cec4b0776fd347259a723d625357bb4b82f62687b",
"sha256:418bb0038dfafeac923823c2e63226179976c76f981a2aaad0ad5d51f2229bca",
"sha256:419f009fa4cfde4d16a7fc070d64f36d70a8d35a90d71aa27670bba2be4fd039",
"sha256:47f6eb74e1ecb5e19a78f4a4228aa24df7fbab3b62d4a625d3f41194a08bd54f",
"sha256:4d79aad0ad4b980663316f26d9a492e8fab2af77c69c0f33780a56843ad2f89e",
"sha256:4f7e69a7fd4b5ce419238388e55abd220336bd32212c673ceabc57ccf3d05b55",
"sha256:52b8b4e06fc15519019e128abedaeb56412b106ab88b3c452188ca47a25c4093",
"sha256:56181093c10dbc6ceb8a29dfeea1e815e1dfdc020169203d87fd8d37616f73f9",
"sha256:63f41a909d182d2b78fe3abef557fcc14da50c7852f70ae3be60e83ff64edba5",
"sha256:689eb4356649ec9535b3686200b231876fb4cab4aca54e3bece71d37f50c1d13",
"sha256:69046cd9a2a17245c4ce3c1f1a4ff8c70c7701ef222fce3d1d8435f09042bba1",
"sha256:69b97aa5792428f321f72aeb2f118e56893371f27e0b7d05750bcad06fc42ca1",
"sha256:69ff36d3f8f5652994e08bd22f093e11cfd0444cea310f92e01b45a4e46b624e",
"sha256:6f121900131d116e4a93b55ab0d12ad72573f967b100e49086e496a9b24523ea",
"sha256:6ff71ede6d9a5a58cfb7b6fffc83ab5d4a63138276c771ac91ceaaddf5459644",
"sha256:71a8f241456b6c2668374d5d28398f8e8cdae4cce568aaea54e0f39359cd928d",
"sha256:74e4e48c8752d14ecfb36d2ebb3d76d614320570e14de0a3aa7a726ff150a03c",
"sha256:7673a76772bda15d0d10d1aa881b7911d0580c980dbd16e59d7ba1422b2d83cd",
"sha256:76d32588ef7e4a3f3adff1956a0ba96faabbdee58f2407c122dd45aa6e34f372",
"sha256:7b39476ee69cfe64061fd77a73bf692c40021f8547cda617a3466530ef63f947",
"sha256:7be99f4abb008cb38e144f85f515598f4c2c8932bf11b65add0ff59c9c876d99",
"sha256:7bfdb41dc6e85d8535b00d73947548a748e9534e8e4fddd2638109ff3fb081df",
"sha256:7d2334e387b2adcc944680bebcf412743f2caf4eeebd550f67249c1c3696be04",
"sha256:7d29dd5319d20aa3b7749719ac9685fbd926f71ac8c77b2477272725f882072d",
"sha256:7d4845f8501ab28ebfdbeab980a50a273b415cf69e96e4e674d43d86a464df9d",
"sha256:824dff4f9f4d0f59d0fa3577932ee9a20e09edec8a2f813e1d6b9f89ced8293f",
"sha256:84e90494db7df3be5e056f91412f9fa9e611fbe8ce4aaef70647297f5943b276",
"sha256:8a78dfb198a328bfb38e4308ca8167028920fb747ddcf086ce706fbdd23b2926",
"sha256:8b73a06bafc8dcc508420db43b4dd5850e41e69de99009d0351c4f3007960019",
"sha256:916b0417aeddf2c8c61291238ce25286f391a6acb6f28005dd9ce282bd6311b6",
"sha256:935c369bf8acc2dc26f6eeb5222768aa7c62917c3554f7215f2ead7386b33748",
"sha256:939393e8c3f0a5bcd33ef7ace67680c318dc2ae406f15e381c0054dd658397de",
"sha256:9860d455847cd98eb67897f5957b7cd69fbcb436dd3f06099230f16a66e66f79",
"sha256:9b6787b6d0b3518b2ee4cbeadd24a507756ee703adbac1ab6dc7c4434b8c572a",
"sha256:9c0b09d76e5a4caac3d27752027fbd43dc987b95f3748fad2b924a03fe8632ad",
"sha256:a1885d2470955f70dfdd33a02e1749613c5a9c5ab855f6db38e0b9389453dce7",
"sha256:a3666cf4182efdb44d73602379a66f5fdfd5da0db5e4520f0ac0dcca644a3497",
"sha256:aba80e77c227f4234aa34a5ff2b6ff30c5d6a827a91d22ff6b999de9175d71bd",
"sha256:b33f34c9c7decdb2ab99c74be6443942b730b56d9c5ee48fb7df2c86492f293c",
"sha256:b65b0f8747b013570eea2f75726046fa54fa8e0c5db60f3b98dd5d161052004a",
"sha256:b71e614c1ae35c3d62a293b19eface83d5e4d194e3eb2fabb10059d33e6e8cbf",
"sha256:c111b3c69060d2bafc446917534150fd049e7aedd6cbf21ba526a5a97b4402a5",
"sha256:c3770365675f6be220032f6609a8fbad994d6dcf3ef7dbcf295c7ee70884c9af",
"sha256:c4870cb049f10d7680c239b55428916d84158798eb8f353e74fa2c98980dcc0b",
"sha256:c5ff8ff44825736a4065d8544b43b43ee4c6dd1530f3a08e6c0578a813b0aa35",
"sha256:c78700130ce2dcebb1a8103202ae795be2fa8c9351d0dd22338fe3dac74847d9",
"sha256:c7a5b676d3c65e88b3aca41816bf72831898fcd73f0cbb2680e9d88e819d1e4d",
"sha256:c8b04a3dbd54de6ccb7604242fe3ad67f2f3ca558f2d33fe19d4b08d90701a89",
"sha256:d12a244627eba4e9dc52cbf924edef905ddd6cafc6513849b4876076a6f38b0e",
"sha256:d1df528a85fb404899d4207a8d9934cfd6be626e30e5d3a5544a83dbae6d8a7e",
"sha256:d58a54d6ff08d2547656356eea8572b224e6f9bbc0cf55fa9966bcaac4ddfb10",
"sha256:d6577140cd7db19e430661e4b2653680194ea8c22c994bc65b7a19d8ec834403",
"sha256:d6a67e26daa686a6fbdb600a9af8619c80a332556245fa8e86c747d226ab1a1e",
"sha256:dcad56c8d8348e7e468899d2fb3b309b9bc59d94e6db08710555f7436156097f",
"sha256:e0198ea897680e480845ec0ffc5a14e8b694e25b3f104f63676d55bf76a82f1a",
"sha256:e27d3b5ed2c2013bce66ad67ee57cbf614288bda8cdf426c8d8fe548316f1b5f",
"sha256:e40d2cd22914d67c84824045861a5bb0fb46586b15dfe4f046c7495bf08306b2",
"sha256:e4370dda04dc8951012f30e1ce7956a0a226ac0714a7b6c389fb2f43f22a250e",
"sha256:e571fdd9efd65e86c6af2f332e0e95dad259bfe6beb5d15b3c3eca3a6eb5d87b",
"sha256:e78da6b55275987cbc89141a1d8e75f5070e577c482dd48bd9123a76a96f0bbb",
"sha256:eae569fb1e7559d4f3919965617bb39f9e753967fae55ce13454bec2d1c54f09",
"sha256:eb30c4510a691bb87081192a394fb661860e75ca3896c01c6d186febe7c88530",
"sha256:efbdd51872cf170093998c87ccdf3cb5993add3559341a8e5708bcb311934c94",
"sha256:f3460a92638dce7e47062cf088d6e7663adb135e936cb117be88d5e6c48c9d53",
"sha256:f595db1bceabd71c82e92df212dd9525a8a2c6947d39e3c994c4f27d2fe15b11",
"sha256:fb68dc73bc8ac322d2e392a59a9e396c4f35cb6fdbdd749e139d1d6c985f2527"
"sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8",
"sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c",
"sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475",
"sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed",
"sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf",
"sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372",
"sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81",
"sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f",
"sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1",
"sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd",
"sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a",
"sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb",
"sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46",
"sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de",
"sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78",
"sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c",
"sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771",
"sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb",
"sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430",
"sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233",
"sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156",
"sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9",
"sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59",
"sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888",
"sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c",
"sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c",
"sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da",
"sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424",
"sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2",
"sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb",
"sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8",
"sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a",
"sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10",
"sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0",
"sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09",
"sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031",
"sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4",
"sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3",
"sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa",
"sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a",
"sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe",
"sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a",
"sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2",
"sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1",
"sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323",
"sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b",
"sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b",
"sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106",
"sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac",
"sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6",
"sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832",
"sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75",
"sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6",
"sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d",
"sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72",
"sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db",
"sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a",
"sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da",
"sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678",
"sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b",
"sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24",
"sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed",
"sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f",
"sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e",
"sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58",
"sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a",
"sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342",
"sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558",
"sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2",
"sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551",
"sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595",
"sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee",
"sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11",
"sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d",
"sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7",
"sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f"
],
"markers": "python_version >= '3.8'",
"version": "==3.9.4"
"version": "==3.9.5"
},
"aioqbt": {
"git": "git+https://github.com/mhdzumair/aioqbt.git",
@@ -487,20 +487,20 @@
},
"fastapi": {
"hashes": [
"sha256:5df913203c482f820d31f48e635e022f8cbfe7350e4830ef05a3163925b1addc",
"sha256:6feac43ec359dfe4f45b2c18ec8c94edb8dc2dfc461d417d9e626590c071baad"
"sha256:555700b0159379e94fdbfc6bb66a0f1c43f4cf7060f25239af3d84b63a656626",
"sha256:fd7600612f755e4050beb74001310b5a7e1796d149c2ee363124abdfa0289d32"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==0.110.1"
"version": "==0.110.3"
},
"filelock": {
"hashes": [
"sha256:404e5e9253aa60ad457cae1be07c0f0ca90a63931200a47d9b6a6af84fd7b45f",
"sha256:d13f466618bfde72bd2c18255e269f72542c6e70e7bac83a0232d6b1cc5c8cf4"
"sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f",
"sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"
],
"markers": "python_version >= '3.8'",
"version": "==3.13.4"
"version": "==3.14.0"
},
"flatbencode": {
"hashes": [
@@ -704,12 +704,12 @@
},
"gunicorn": {
"hashes": [
"sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0",
"sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033"
"sha256:350679f91b24062c86e386e198a15438d53a7a8207235a78ba1b53df4c4378d9",
"sha256:4a0b436239ff76fb33f11c07a16482c521a7e09c1ce3cc293c2330afe01bec63"
],
"index": "pypi",
"markers": "python_version >= '3.5'",
"version": "==21.2.0"
"markers": "python_version >= '3.7'",
"version": "==22.0.0"
},
"h11": {
"hashes": [
@@ -923,11 +923,11 @@
},
"itemloaders": {
"hashes": [
"sha256:21d81c61da6a08b48e5996288cdf3031c0f92e5d0075920a0242527523e14a48",
"sha256:c8c82fe0c11fc4cdd08ec04df0b3c43f3cb7190002edb517e02d55de8efc2aeb"
"sha256:6ec5753dafdc69262774694c78c9ec44605672586b40a7134a097a5df601a442",
"sha256:fc2307f984116b010d6101a68a6a133ac8de927320b0ab696f31ad710a8d8d98"
],
"markers": "python_version >= '3.7'",
"version": "==1.1.0"
"markers": "python_version >= '3.8'",
"version": "==1.2.0"
},
"jinja2": {
"hashes": [
@@ -986,7 +986,6 @@
"sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b",
"sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6",
"sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8",
"sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5",
"sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306",
"sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5",
"sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f",
@@ -1400,6 +1399,7 @@
"sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89",
"sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==0.20.0"
},
@@ -1476,97 +1476,97 @@
},
"pydantic": {
"hashes": [
"sha256:9dee74a271705f14f9a1567671d144a851c675b072736f0a7b2608fd9e495352",
"sha256:b5ecdd42262ca2462e2624793551e80911a1e989f462910bb81aef974b4bb383"
"sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5",
"sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==2.7.0"
"version": "==2.7.1"
},
"pydantic-core": {
"hashes": [
"sha256:030e4f9516f9947f38179249778709a460a3adb516bf39b5eb9066fcfe43d0e6",
"sha256:09f03dfc0ef8c22622eaa8608caa4a1e189cfb83ce847045eca34f690895eccb",
"sha256:12a05db5013ec0ca4a32cc6433f53faa2a014ec364031408540ba858c2172bb0",
"sha256:14fe73881cf8e4cbdaded8ca0aa671635b597e42447fec7060d0868b52d074e6",
"sha256:1a0c3e718f4e064efde68092d9d974e39572c14e56726ecfaeebbe6544521f47",
"sha256:1be91ad664fc9245404a789d60cba1e91c26b1454ba136d2a1bf0c2ac0c0505a",
"sha256:201713f2f462e5c015b343e86e68bd8a530a4f76609b33d8f0ec65d2b921712a",
"sha256:2027493cc44c23b598cfaf200936110433d9caa84e2c6cf487a83999638a96ac",
"sha256:250ae39445cb5475e483a36b1061af1bc233de3e9ad0f4f76a71b66231b07f88",
"sha256:2533ad2883f001efa72f3d0e733fb846710c3af6dcdd544fe5bf14fa5fe2d7db",
"sha256:25595ac311f20e5324d1941909b0d12933f1fd2171075fcff763e90f43e92a0d",
"sha256:2684a94fdfd1b146ff10689c6e4e815f6a01141781c493b97342cdc5b06f4d5d",
"sha256:27f1009dc292f3b7ca77feb3571c537276b9aad5dd4efb471ac88a8bd09024e9",
"sha256:2adaeea59849ec0939af5c5d476935f2bab4b7f0335b0110f0f069a41024278e",
"sha256:2ae80f72bb7a3e397ab37b53a2b49c62cc5496412e71bc4f1277620a7ce3f52b",
"sha256:2d5728e93d28a3c63ee513d9ffbac9c5989de8c76e049dbcb5bfe4b923a9739d",
"sha256:2e91711e36e229978d92642bfc3546333a9127ecebb3f2761372e096395fc649",
"sha256:2fe0c1ce5b129455e43f941f7a46f61f3d3861e571f2905d55cdbb8b5c6f5e2c",
"sha256:38a5024de321d672a132b1834a66eeb7931959c59964b777e8f32dbe9523f6b1",
"sha256:3e352f0191d99fe617371096845070dee295444979efb8f27ad941227de6ad09",
"sha256:48dd883db92e92519201f2b01cafa881e5f7125666141a49ffba8b9facc072b0",
"sha256:54764c083bbe0264f0f746cefcded6cb08fbbaaf1ad1d78fb8a4c30cff999a90",
"sha256:54c7375c62190a7845091f521add19b0f026bcf6ae674bdb89f296972272e86d",
"sha256:561cf62c8a3498406495cfc49eee086ed2bb186d08bcc65812b75fda42c38294",
"sha256:56823a92075780582d1ffd4489a2e61d56fd3ebb4b40b713d63f96dd92d28144",
"sha256:582cf2cead97c9e382a7f4d3b744cf0ef1a6e815e44d3aa81af3ad98762f5a9b",
"sha256:58aca931bef83217fca7a390e0486ae327c4af9c3e941adb75f8772f8eeb03a1",
"sha256:5f7973c381283783cd1043a8c8f61ea5ce7a3a58b0369f0ee0ee975eaf2f2a1b",
"sha256:6395a4435fa26519fd96fdccb77e9d00ddae9dd6c742309bd0b5610609ad7fb2",
"sha256:63d7523cd95d2fde0d28dc42968ac731b5bb1e516cc56b93a50ab293f4daeaad",
"sha256:641a018af4fe48be57a2b3d7a1f0f5dbca07c1d00951d3d7463f0ac9dac66622",
"sha256:667880321e916a8920ef49f5d50e7983792cf59f3b6079f3c9dac2b88a311d17",
"sha256:684d840d2c9ec5de9cb397fcb3f36d5ebb6fa0d94734f9886032dd796c1ead06",
"sha256:68717c38a68e37af87c4da20e08f3e27d7e4212e99e96c3d875fbf3f4812abfc",
"sha256:6b7bbb97d82659ac8b37450c60ff2e9f97e4eb0f8a8a3645a5568b9334b08b50",
"sha256:72722ce529a76a4637a60be18bd789d8fb871e84472490ed7ddff62d5fed620d",
"sha256:73c1bc8a86a5c9e8721a088df234265317692d0b5cd9e86e975ce3bc3db62a59",
"sha256:76909849d1a6bffa5a07742294f3fa1d357dc917cb1fe7b470afbc3a7579d539",
"sha256:76b86e24039c35280ceee6dce7e62945eb93a5175d43689ba98360ab31eebc4a",
"sha256:7a5d83efc109ceddb99abd2c1316298ced2adb4570410defe766851a804fcd5b",
"sha256:80e0e57cc704a52fb1b48f16d5b2c8818da087dbee6f98d9bf19546930dc64b5",
"sha256:85233abb44bc18d16e72dc05bf13848a36f363f83757541f1a97db2f8d58cfd9",
"sha256:907a4d7720abfcb1c81619863efd47c8a85d26a257a2dbebdb87c3b847df0278",
"sha256:9376d83d686ec62e8b19c0ac3bf8d28d8a5981d0df290196fb6ef24d8a26f0d6",
"sha256:94b9769ba435b598b547c762184bcfc4783d0d4c7771b04a3b45775c3589ca44",
"sha256:9a29726f91c6cb390b3c2338f0df5cd3e216ad7a938762d11c994bb37552edb0",
"sha256:9b6431559676a1079eac0f52d6d0721fb8e3c5ba43c37bc537c8c83724031feb",
"sha256:9ece8a49696669d483d206b4474c367852c44815fca23ac4e48b72b339807f80",
"sha256:a139fe9f298dc097349fb4f28c8b81cc7a202dbfba66af0e14be5cfca4ef7ce5",
"sha256:a32204489259786a923e02990249c65b0f17235073149d0033efcebe80095570",
"sha256:a3982b0a32d0a88b3907e4b0dc36809fda477f0757c59a505d4e9b455f384b8b",
"sha256:aad17e462f42ddbef5984d70c40bfc4146c322a2da79715932cd8976317054de",
"sha256:b560b72ed4816aee52783c66854d96157fd8175631f01ef58e894cc57c84f0f6",
"sha256:b6b0e4912030c6f28bcb72b9ebe4989d6dc2eebcd2a9cdc35fefc38052dd4fe8",
"sha256:baf1c7b78cddb5af00971ad5294a4583188bda1495b13760d9f03c9483bb6203",
"sha256:c0295d52b012cbe0d3059b1dba99159c3be55e632aae1999ab74ae2bd86a33d7",
"sha256:c562b49c96906b4029b5685075fe1ebd3b5cc2601dfa0b9e16c2c09d6cbce048",
"sha256:c69567ddbac186e8c0aadc1f324a60a564cfe25e43ef2ce81bcc4b8c3abffbae",
"sha256:ca71d501629d1fa50ea7fa3b08ba884fe10cefc559f5c6c8dfe9036c16e8ae89",
"sha256:ca976884ce34070799e4dfc6fbd68cb1d181db1eefe4a3a94798ddfb34b8867f",
"sha256:d0491006a6ad20507aec2be72e7831a42efc93193d2402018007ff827dc62926",
"sha256:d074b07a10c391fc5bbdcb37b2f16f20fcd9e51e10d01652ab298c0d07908ee2",
"sha256:d2ce426ee691319d4767748c8e0895cfc56593d725594e415f274059bcf3cb76",
"sha256:d4284c621f06a72ce2cb55f74ea3150113d926a6eb78ab38340c08f770eb9b4d",
"sha256:d5e6b7155b8197b329dc787356cfd2684c9d6a6b1a197f6bbf45f5555a98d411",
"sha256:d816f44a51ba5175394bc6c7879ca0bd2be560b2c9e9f3411ef3a4cbe644c2e9",
"sha256:dd3f79e17b56741b5177bcc36307750d50ea0698df6aa82f69c7db32d968c1c2",
"sha256:dd63cec4e26e790b70544ae5cc48d11b515b09e05fdd5eff12e3195f54b8a586",
"sha256:de9d3e8717560eb05e28739d1b35e4eac2e458553a52a301e51352a7ffc86a35",
"sha256:df4249b579e75094f7e9bb4bd28231acf55e308bf686b952f43100a5a0be394c",
"sha256:e178e5b66a06ec5bf51668ec0d4ac8cfb2bdcb553b2c207d58148340efd00143",
"sha256:e60defc3c15defb70bb38dd605ff7e0fae5f6c9c7cbfe0ad7868582cb7e844a6",
"sha256:ee2794111c188548a4547eccc73a6a8527fe2af6cf25e1a4ebda2fd01cdd2e60",
"sha256:ee7ccc7fb7e921d767f853b47814c3048c7de536663e82fbc37f5eb0d532224b",
"sha256:ee9cf33e7fe14243f5ca6977658eb7d1042caaa66847daacbd2117adb258b226",
"sha256:f0f17814c505f07806e22b28856c59ac80cee7dd0fbb152aed273e116378f519",
"sha256:f3202a429fe825b699c57892d4371c74cc3456d8d71b7f35d6028c96dfecad31",
"sha256:f7054fdc556f5421f01e39cbb767d5ec5c1139ea98c3e5b350e02e62201740c7",
"sha256:fd1a9edb9dd9d79fbeac1ea1f9a8dd527a6113b18d2e9bcc0d541d308dae639b"
"sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b",
"sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a",
"sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90",
"sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d",
"sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e",
"sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d",
"sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027",
"sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804",
"sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347",
"sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400",
"sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3",
"sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399",
"sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349",
"sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd",
"sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c",
"sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e",
"sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413",
"sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3",
"sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e",
"sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3",
"sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91",
"sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce",
"sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c",
"sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb",
"sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664",
"sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6",
"sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd",
"sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3",
"sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af",
"sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043",
"sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350",
"sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7",
"sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0",
"sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563",
"sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761",
"sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72",
"sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3",
"sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb",
"sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788",
"sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b",
"sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c",
"sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038",
"sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250",
"sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec",
"sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c",
"sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74",
"sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81",
"sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439",
"sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75",
"sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0",
"sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8",
"sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150",
"sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438",
"sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae",
"sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857",
"sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038",
"sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374",
"sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f",
"sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241",
"sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592",
"sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4",
"sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d",
"sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b",
"sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b",
"sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182",
"sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e",
"sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641",
"sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70",
"sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9",
"sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a",
"sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543",
"sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b",
"sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f",
"sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38",
"sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845",
"sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2",
"sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0",
"sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4",
"sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242"
],
"markers": "python_version >= '3.8'",
"version": "==2.18.1"
"version": "==2.18.2"
},
"pydantic-settings": {
"hashes": [
@@ -1590,91 +1590,69 @@
"srv"
],
"hashes": [
"sha256:00e6cfce111883ca63a3c12878286e0b89871f4b840290e61fb6f88ee0e687be",
"sha256:01277a7e183c59081368e4efbde2b8f577014431b257959ca98d3a4e8682dd51",
"sha256:0182899aafe830f25cf96c5976d724efeaaf7b6646c15424ad8dd25422b2efe1",
"sha256:098d420a8214ad25f872de7e8b309441995d12ece0376218a04d9ed5d2222cf3",
"sha256:0a4ea44e5a913bdb7c9abd34c69e9fcfac10dfaf49765463e0dc1ea922dd2a9d",
"sha256:0e208f2ab7b495eff8fd175022abfb0abce6307ac5aee3f4de51fc1a459b71c9",
"sha256:138b9fa18d40401c217bc038a48bcde4160b02d36d8632015b1804971a2eaa2f",
"sha256:14a82593528cddc93cfea5ee78fac95ae763a3a4e124ca79ee0b24fbbc6da1c9",
"sha256:151361c101600a85cb1c1e0db4e4b28318b521fcafa9b62d389f7342faaaee80",
"sha256:17c1c143ba77d6e21fc8b48e93f0a5ed982a23447434e9ee4fbb6d633402506b",
"sha256:18e5c161b18660f1c9d1f78236de45520a436be65e42b7bb51f25f74ad22bdde",
"sha256:1c2761302b6cbfd12e239ce1b8061d4cf424a361d199dcb32da534985cae9350",
"sha256:26d036e0f5de09d0b21d0fc30314fcf2ae6359e4d43ae109aa6cf27b4ce02d30",
"sha256:2a6ae9a600bbc2dbff719c98bf5da584fb8a4f2bb23729a09be2e9c3dbc61c8a",
"sha256:2ef1b4992ee1cb8bb16745e70afa0c02c5360220a7a8bb4775888721f052d0a6",
"sha256:36d7049fc183fe4edda3eae7f66ea14c660921429e082fe90b4b7f4dc6664a70",
"sha256:391aea047bba928006114282f175bc8d09c53fe1b7d8920bf888325e229302fe",
"sha256:3b909e5b1864de01510079b39bbdc480720c37747be5552b354bc73f02c24a3c",
"sha256:3e1ba5a037c526a3f4060c28f8d45d71ed9626e2bf954b0cd9a8dcc3b45172ee",
"sha256:400074090b9a631f120b42c61b222fd743490c133a5d2f99c0208cefcccc964e",
"sha256:462684a6f5ce6f2661c30eab4d1d459231e0eed280f338e716e31a24fc09ccb3",
"sha256:4670edbb5ddd71a4d555668ef99b032a5f81b59e4145d66123aa0d831eac7883",
"sha256:48c60bd32ec141c0d45d8471179430003d9fb4490da181b8165fb1dce9cc255c",
"sha256:4955be64d943b30f2a7ff98d818ca530f7cb37450bc6b32c37e0e74821907ef8",
"sha256:4a0660ce32d8459b7f12dc3ca0141528fead62d3cce31b548f96f30902074cc0",
"sha256:4d167d546352869125dc86f6fda6dffc627d8a9c8963eaee665825f2520d542b",
"sha256:53451190b8628e1ce7d1fe105dc376c3f10705127bd3b51fe3e107b9ff1851e6",
"sha256:5c8a4982f5eb767c6fbfb8fb378683d09bcab7c3251ba64357eef600d43f6c23",
"sha256:5f465cca9b178e7bb782f952dd58e9e92f8ba056e585959465f2bb50feddef5f",
"sha256:60931b0e07448afe8866ffff764cd5bf4b1a855dc84c7dcb3974c6aa6a377a59",
"sha256:664c64b6bdb31aceb80f0556951e5e2bf50d359270732268b4e7af00a1cf5d6c",
"sha256:6b5aec78aa4840e8d6c3881900259892ab5733a366696ca10d99d68c3d73eaaf",
"sha256:6cec7279e5a1b74b257d0270a8c97943d745811066630a6bc6beb413c68c6a33",
"sha256:6d5b35da9e16cda630baed790ffc3d0d01029d269523a7cec34d2ec7e6823e75",
"sha256:6de33f1b2eed91b802ec7abeb92ffb981d052f3604b45588309aae9e0f6e3c02",
"sha256:705a9bfd619301ee7e985d6f91f68b15dfcb2f6f36b8cc225cc82d4260d2bce5",
"sha256:722f2b709b63311c0efda4fa4c603661faa4bec6bad24a6cc41a3bc6d841bf09",
"sha256:731a92dfc4022db763bfa835c6bd160f2d2cba6ada75749c2ed500e13983414b",
"sha256:7330245253fbe2e09845069d2f4d35dd27f63e377034c94cb0ddac18bc8b0d82",
"sha256:75107a386d4ccf5291e75cce8ca3898430e7907f4cc1208a17c9efad33a1ea84",
"sha256:7df8b166d3db6cfead4cf55b481408d8f0935d8bd8d6dbf64507c49ef82c7200",
"sha256:7ee79e02a7c5ed34706ecb5dad19e6c7d267cf86d28c075ef3127c58f3081279",
"sha256:872bad5c83f7eec9da11e1fef5f858c6a4c79fe4a83c7780e7b0fe95d560ae3f",
"sha256:8b3853fb66bf34ce1b6e573e1bbb3cb28763be9d1f57758535757faf1ab2f24a",
"sha256:8d0ea740a2faa56f930dc82c5976d96c017ece26b29a1cddafb58721c7aab960",
"sha256:8e97c138d811e9367723fcd07c4402a9211caae20479fdd6301d57762778a69f",
"sha256:90525454546536544307e6da9c81f331a71a1b144e2d038fec587cc9f9250285",
"sha256:9066dff9dc0a182478ca5885d0b8a2b820b462e19459ada109df7a3ced31b272",
"sha256:9757602fb45c8ecc1883fe6db7c59c19d87eb3c645ec9342d28a6026837da931",
"sha256:98877a9c4ad42df8253a12d8d17a3265781d1feb5c91c767bd153f88feb0b670",
"sha256:994386a4d6ad39e18bcede6dc8d1d693ec3ed897b88f86b1841fbc37227406da",
"sha256:9b35f8bded43ff91475305445fedf0613f880ff7e25c75ae1028e1260a9b7a86",
"sha256:9c9340c7161e112e36ebb97fbba1cdbe7db3dfacb694d2918b1f155a01f3d859",
"sha256:9e51e30d67b468a2a634ade928b30cb3e420127f148a9aec60de33f39087bdc4",
"sha256:a023804a3ac0f85d4510265b60978522368b5815772262e61e3a2222a8b315c9",
"sha256:aa310096450e9c461b7dfd66cbc1c41771fe36c06200440bb3e062b1d4a06b6e",
"sha256:af039afc6d787502c02089759778b550cb2f25dbe2780f5b050a2e37031c3fbf",
"sha256:af5c5112db04cf62a5d9d224a24f289aaecb47d152c08a457cca81cee061d5bd",
"sha256:b3d10bdd46cbc35a2109737d36ffbef32e7420569a87904738ad444ccb7ac2c5",
"sha256:b7cf28d9c90e40d4e385b858e4095739829f466f23e08674085161d86bb4bb10",
"sha256:bec8e4e88984be157408f1923d25869e1b575c07711cdbdde596f66931800934",
"sha256:becfa816545a48c8e740ac2fd624c1c121e1362072d68ffcf37a6b1be8ea187e",
"sha256:c2ad3e5bfcd345c0bfe9af69a82d720860b5b043c1657ffb513c18a0dee19c19",
"sha256:c4726e36a2f7e92f09f5b8e92ba4db7525daffe31a0dcbcf0533edc0ade8c7d8",
"sha256:c67c19f653053ef2ebd7f1837c2978400058d6d7f66ec5760373a21eaf660158",
"sha256:c701de8e483fb5e53874aab642235361aac6de698146b02c644389eaa8c137b6",
"sha256:cc7a26edf79015c58eea46feb5b262cece55bc1d4929a8a9e0cbe7e6d6a9b0eb",
"sha256:ccc15a7c7a99aed7d0831eaf78a607f1db0c7a255f96e3d18984231acd72f70c",
"sha256:cd6c15242d9306ff1748681c3235284cbe9f807aeaa86cd17d85e72af626e9a7",
"sha256:cdbea2aac1a4caa66ee912af3601557d2bda2f9f69feec83601c78c7e53ece64",
"sha256:d30d5d7963453b478016bf7b0d87d7089ca24d93dbdecfbc9aa32f1b4772160a",
"sha256:dde9fb6e105ce054339256a8b7a9775212ebb29596ef4e402d7bbc63b354d202",
"sha256:e097f877de4d6af13a33ef938bf2a2350f424be5deabf8b857da95f5b080487a",
"sha256:e1e1586ebdebe0447a24842480defac17c496430a218486c96e2da3f164c0f05",
"sha256:e344d0afdd7c06c1f1e66a4736593293f432defc2191e6b411fc9c82fa8c5adc",
"sha256:e4056bc421d4df2c61db4e584415f2b0f1eebb92cbf9222f7f38303467c37117",
"sha256:e420e74c6db4594a6d09f39b58c0772679006cb0b4fc40901ba608794d87dad2",
"sha256:e458e6fc2b7dd40d15cda04898bd2d8c9ff7ae086c516bc261628d54eb4e3158",
"sha256:eaf3d594ebfd5e1f3503d81e06a5d78e33cda27418b36c2491c3d4ad4fca5972",
"sha256:ebcc145c74d06296ce0cad35992185064e5cb2aadef719586778c144f0cd4d37",
"sha256:f4330c022024e7994b630199cdae909123e4b0e9cf15335de71b146c0f6a2435",
"sha256:ff7d1f449fcad23d9bc8e8dc2b9972be38bcd76d99ea5f7d29b2efa929c2a7ff"
"sha256:11f74dafde63ad2dc30c01f40b4c69d9af157f8ba5224b0c9d4de7158537266f",
"sha256:13fc201e073644acd77860d9e91ccfc27addf510563e07381cadc9a55ac3a894",
"sha256:1bd1eef70c1eda838b26397ef75c9580d7a97fd94b6324971d7f3d2ad3552e9a",
"sha256:24c8f1dd545360ec1b79007a3ba6573af565df6fde49f6dfc53813f3f475a751",
"sha256:253ed8fd6e7f4b2a1caa89e6b287b9e04f42613319ee1e1240c2db2afe1637e7",
"sha256:263c169302df636f9086b584994a51d0adfc8738fe27d7b8e2aacf46fd68b6cb",
"sha256:297cdc87c4b4168782b571c8643540e9b0ad1d09266b43d2f5954f8632280835",
"sha256:2ccc8dd4fe9aac18dde27c33a53271c6c90159b74c43fbdab1d33d5efc36c2f5",
"sha256:30a9d891631d7e847b24f551b1d89ff2033539e7cd8e9af29714b4d0db7abb06",
"sha256:31ed8ba3da0366346264604b3a443f5a4232cab5ed45f520bead6184cf0851a1",
"sha256:337d99f88d32a5f8056d6d2bc365ccf09d09583f3942882c50cf11b459e8fbc0",
"sha256:3ef32a7cfe748c0c72fdad9e51459de5e0c6b16c5288b39f863abfff23503847",
"sha256:455f9d603ed0990a787773d5718e871300bddf585ce543baf129c9f5ca3adb02",
"sha256:45ac46f0d6bdc2baac34ced60aae27b2083170d77397330eff0ac5689ea29d38",
"sha256:4c7e05454cdc5aa4702e03cad0df4205daccd6fd631bbbf0a85bbe598129a6cc",
"sha256:4d227555be35078b53f506f6b58bd0b0e8fd4513e89e6f29e83a97efab439250",
"sha256:4dd998e9f0f7694032c1648c7f57fccaa78903df6329b8f8ae20cfa7c4ceca34",
"sha256:5119c66af8c4197c8757b4b7d98c443e5b127c224ac92fb657dbe2b512ae2713",
"sha256:57b5b485ef89270ed2e603814f43f0fdd9b8ba5d4039124d90878cdc2327000c",
"sha256:58989bcb94233233a71645236b972835d4f87a6bb1b7e818d38a7e6e6d4630de",
"sha256:5a58b6cd7c423ba49db10d8445756062c931ad2246ba0da1e705bf22962fd9e9",
"sha256:5ae1aeeb405c29885266666dc7115792d647ed68cfdb6ed02e2e211d12f2e1c8",
"sha256:5bc87db2e9563295c4e45602ab978a2fcbaba3ab89e745503b24f895cddeb755",
"sha256:5ff6d56ca1f0cd3687a13ce90a32a8efb3cc3a53728e5ac160c4c30d10385a72",
"sha256:615c7573d7a9c4837332a673fdc5a5f214b474dd52d846bcf4cc3d011550bee1",
"sha256:64b69b9cd8a6d23881a80490d575e92918f9afca43096a7d6c1013d6b3e5c75c",
"sha256:65c45682d5ed8c6618bde22cd6716b47a197f4ef800a025213b28d13a59e5fca",
"sha256:67cbee427c263a4483e3249fef480788ccc16edb1a4fc330c4c6cb0cb9db94a8",
"sha256:7247c1dc7d8eed4e24eb1dd92c4c58ebf1e5159500015652552acfdebdeed256",
"sha256:73bf96ece4999b0bbab7169cb2b9c60918b434487009e48be4bd47eeb2aa7b14",
"sha256:7b10603ba64af08f5af7eb9a69d6b24e3c69d91fdd48c54b95e284686c1c582d",
"sha256:811a07bba9d35f1e34159ede632ac71dbc429b372a20004e32d6578af872db1a",
"sha256:811c41c6227b7548afcb53e1b996c25262d837b5e5f519e2ddc2c7e59d8728a5",
"sha256:85b8dd3756b73993b1e3ab6b1cba826b9e4987a094a5d5b6d37313776458cd94",
"sha256:887d043ecc0c7d5591925bbc7abb67caf21c94d6e6e5d442cb49eb5d9d8ee76b",
"sha256:8cee62188127a126f59ea45d3981868a5e35343be4ef4ad8712eaf42be37a00b",
"sha256:9e0a30a022ac8a9164ee5a4b761e13dbb3d10a21845f7258011e3415151fb645",
"sha256:9e99dac3c7c2cb498937cc1767361851099da38861e921113318c87d71e3d127",
"sha256:a46c08ef0b273c415b1e8933f6739596be264ae700a4927f84e0b84e70fdf0eb",
"sha256:a848249d5b4763497add62f7dd7bd0ce1538129bf42f4cb132a76d24c61bf98d",
"sha256:aa354933a158e57494c98b592f46d5d24d1b109e6ba05a05179cde719d9f7fd3",
"sha256:ad360630c221aee7c0841a51851496a3ca6fdea87007098a982c1aa26e34083a",
"sha256:b897b60b2d55c26f3efea0effc11b655db68125c3731274bc3953375e9ccab73",
"sha256:b8b95e2163b73d03a913efa89b0f7c5012be82efd4e9dbce8aa62010a75a277c",
"sha256:bfd5c7e5bb87171a5296fa32205adb50b27704a612036ec4395c3cd316fc0e91",
"sha256:c808098f2cdb87d4035144e536ba5fa7709d0420c17b68e6ace5da18c38ded5f",
"sha256:d1829a7db720ff586aaf59c806e89e0a388548063aa844d21a570a231ad8ca87",
"sha256:d50969de00d3522b2c394f7e59b843871e2be4b525af92066da7f3bd02799fdc",
"sha256:d63f38454a2e23c117d3ceab3b661568f2418536825787256ad24e5baaedfd27",
"sha256:d804eaf19a65211cc2c8c5db75be685c3f31c64cdab639794f66f13f8e258ba6",
"sha256:daf35ab13b86aba7cc8c4b019882f1fa8d287a26f586ef5eaf60a5233d3eaa52",
"sha256:dbc32217c81d87750401fa1c2bc9450e854b23e6e30243c82d3514b8e58f39e3",
"sha256:e175d74c52b6c8414a4b4504a2dd42b0202d101b2eb9508a34c137357683864e",
"sha256:e4a63ba6813a2168ebd35ea5369f6c33f7787525986cd77668b7956acc3d2a38",
"sha256:e935712b17e7a42831022353bac91a346a792658a54e12bec907ec11695cc899",
"sha256:ec94d29103317aa920dae59ed385de9604cb0ef840b5b7137b5eaa7a2042580a",
"sha256:ed6b3a0740efe98bb03ccf054578e9788ebcd06d021d548b8217ab2c82e45975",
"sha256:f2a720e787c9b9b912db5bb4c3e7123ccff1352d6c3ac0cb2c7ee392cdc95c00",
"sha256:f8822614975038e0cece47d12e7634a79c2ee590a0ae78ae64c37b9c6610a14c",
"sha256:fb1a884b1c6aeac5ffeb8ccb696fbc242a7ae1bba36f2328c01f76fab7221b94"
],
"markers": "python_version >= '3.7'",
"version": "==4.6.3"
"version": "==4.7.1"
},
"pyopenssl": {
"hashes": [
@@ -1889,11 +1867,11 @@
"hiredis"
],
"hashes": [
"sha256:4973bae7444c0fbed64a06b87446f79361cb7e4ec1538c022d696ed7a5015580",
"sha256:5da9b8fe9e1254293756c16c008e8620b3d15fcc6dde6babde9541850e72a32d"
"sha256:7adc2835c7a9b5033b7ad8f8918d09b7344188228809c98df07af226d39dec91",
"sha256:ec31f2ed9675cc54c21ba854cfe0462e6faf1d83c8ce5944709db8a4700b9c61"
],
"markers": "python_version >= '3.7'",
"version": "==5.0.3"
"version": "==5.0.4"
},
"requests": {
"hashes": [
@@ -1947,11 +1925,11 @@
},
"setuptools": {
"hashes": [
"sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e",
"sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"
"sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987",
"sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"
],
"markers": "python_version >= '3.8'",
"version": "==69.2.0"
"version": "==69.5.1"
},
"six": {
"hashes": [
@@ -2155,11 +2133,11 @@
},
"validators": {
"hashes": [
"sha256:85bc82511f6ccd0800f4c15d8c0dc546c15e369640c5ea1f24349ba0b3b17815",
"sha256:e0184691dea3ba82b52c161ba81d3ec1d8be8da9609f0137d1430b395b366521"
"sha256:5ac88e7916c3405f0ce38ac2ac82a477fcf4d90dbbeddd04c8193171fc17f7dc",
"sha256:890c98789ad884037f059af6ea915ec2d667129d509180c2c590b8009a4c4219"
],
"markers": "python_version >= '3.8'",
"version": "==0.28.0"
"version": "==0.28.1"
},
"w3lib": {
"hashes": [
@@ -2205,10 +2183,10 @@
},
"watchdog-gevent": {
"hashes": [
"sha256:71dced5ec451b3deafd1dc73baaf52a7ce4d54d9a1eb606f9370235125f2424a",
"sha256:dcebd07668b472790ad0e7a7b40ad8c365e156c40cf54ffd5499c65c65c4f66f"
"sha256:05b643b86b6ed43488ba47c259d81d6ed4f86de271204c8e7fa369c7c502b1dc",
"sha256:beb63c4484b93301dd3a2383a072a7598269b88ab84df17fc58ca487eda5deff"
],
"version": "==0.1.1"
"version": "==0.2.0"
},
"watchfiles": {
"hashes": [
+2
View File
@@ -8,6 +8,7 @@ from dramatiq.middleware import (
ShutdownNotifications,
Callbacks,
Pipelines,
Prometheus,
)
from api.middleware import MaxTasksPerChild, Retries, TaskManager
@@ -16,6 +17,7 @@ from db.config import settings
# Setup the broker and the middleware
redis_broker = RedisBroker(url=settings.redis_url)
redis_broker.middleware = [
Prometheus(),
AgeLimit(),
TimeLimit(),
ShutdownNotifications(),
+5
View File
@@ -22,6 +22,7 @@ from api import middleware
from api.scheduler import setup_scheduler
from db import database, crud, schemas
from db.config import settings
from metrics.routes import metrics_router
from scrapers.routes import router as scrapers_router
from streaming_providers import mapper
from streaming_providers.routes import router as streaming_provider_router
@@ -51,6 +52,7 @@ app.state.redis = redis.Redis(
connection_pool=redis.ConnectionPool.from_url(settings.redis_url)
)
app.add_middleware(middleware.RateLimitMiddleware, redis_client=app.state.redis)
app.add_middleware(middleware.TimingMiddleware)
app.add_middleware(middleware.SecureLoggingMiddleware)
app.add_middleware(middleware.UserDataMiddleware)
@@ -547,6 +549,7 @@ async def get_scraper(request: Request):
{
"request": request,
"authentication_required": settings.api_password is not None,
"scrapy_spiders": const.SCRAPY_SPIDERS.items(),
},
)
@@ -556,3 +559,5 @@ app.include_router(
)
app.include_router(scrapers_router, prefix="/scraper", tags=["scraper"])
app.include_router(metrics_router, prefix="/metrics", tags=["metrics"])
+16 -3
View File
@@ -2,6 +2,7 @@ import hashlib
import logging
import os
import signal
import time
from datetime import timedelta, datetime
from threading import Lock
from typing import Callable, Optional
@@ -222,9 +223,12 @@ class TaskManager(dramatiq.Middleware):
)
return
keys = "_".join([str(arg) for arg in args])
keys += "_".join([f"{k}={v}" for k, v in kwargs.items()])
task_key = f"background_tasks:{task_name}:{keys}"
if spider_name := kwargs.get("spider_name"):
task_key = f"background_tasks:run_spider:spider_name={spider_name}"
else:
keys = "_".join([str(arg) for arg in args])
keys += "_".join([f"{k}={v}" for k, v in kwargs.items()])
task_key = f"background_tasks:{task_name}:{keys}"
return task_name, min_interval, set_cache_expiry, task_key
@@ -272,3 +276,12 @@ class TaskManager(dramatiq.Middleware):
ex=int(min_interval.total_seconds()) if set_cache_expiry else None,
)
logging.info(f"Task key {task_key} updated cache with latest run time.")
class TimingMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers["X-Process-Time"] = f"{process_time:.4f} seconds"
return response
+22
View File
@@ -1,6 +1,7 @@
import asyncio
import json
import logging
from datetime import datetime
from typing import Optional
from uuid import uuid4
@@ -877,3 +878,24 @@ async def get_genres(catalog_type: str, redis: Redis) -> list[str]:
# cache the genres for 30 minutes
await redis.set(f"{catalog_type}_genres", json.dumps(genres), ex=1800)
return genres
async def fetch_last_run(redis: Redis, spider_id: str, spider_name: str):
task_key = f"background_tasks:run_spider:spider_name={spider_id}"
last_run_timestamp = await redis.get(task_key)
if last_run_timestamp:
last_run = datetime.fromtimestamp(float(last_run_timestamp))
delta = datetime.now() - last_run
delta_str = str(delta)
return spider_name, {
"last_run": last_run.isoformat(),
"time_since_last_run": delta_str,
"time_since_last_run_seconds": delta.total_seconds(),
}
else:
return spider_name, {
"last_run": "Never",
"time_since_last_run": "Never run",
"time_since_last_run_seconds": -1,
}
View File
+110
View File
@@ -0,0 +1,110 @@
import asyncio
from typing import Literal
from fastapi import APIRouter, Request, Response
from prometheus_client import Gauge, generate_latest, CONTENT_TYPE_LATEST
from db.crud import fetch_last_run
from db.models import (
MediaFusionMovieMetaData,
MediaFusionSeriesMetaData,
TorrentStreams,
MediaFusionTVMetaData,
)
from utils import const
metrics_router = APIRouter()
total_torrents_gauge = Gauge("total_torrents", "Total number of torrents")
metadata_count_gauge = Gauge(
"metadata_count",
"Total number of metadata in the database",
labelnames=["metadata_type"],
)
spider_last_run_gauge = Gauge(
"spider_last_run_time",
"Seconds since the last run of each spider, labeled by spider name",
labelnames=["spider_name"],
)
@metrics_router.get("/torrents", tags=["metrics"])
async def get_total_torrents():
count = await TorrentStreams.get_motor_collection().count_documents({})
return {"total_torrents": count}
@metrics_router.get("/metadata", tags=["metrics"])
async def get_total_metadata():
results = await asyncio.gather(
MediaFusionMovieMetaData.get_motor_collection().count_documents({}),
MediaFusionSeriesMetaData.get_motor_collection().count_documents({}),
MediaFusionTVMetaData.get_motor_collection().count_documents({}),
)
movies_count, series_count, tv_channels_count = results
return {
"movies": movies_count,
"series": series_count,
"tv_channels": tv_channels_count,
}
@metrics_router.get("/scrapy-schedulers", tags=["metrics"])
async def get_schedulers_last_run(request: Request):
tasks = [
fetch_last_run(request.app.state.redis, spider_id, spider_name)
for spider_id, spider_name in const.SCRAPY_SPIDERS.items()
]
results = await asyncio.gather(*tasks)
stats = {spider_name: data for spider_name, data in results}
return stats
@metrics_router.get("/scrapy-scheduler/{spider_name}", tags=["metrics"])
async def get_scheduler_last_run(
request: Request,
spider_name: Literal[
"formula_tgx",
"mhdtvworld",
"mhdtvsports",
"tamilultra",
"sport_video",
"streamed",
"mrgamingstreams",
"tamil_blasters",
"tamilmv",
"crictime",
"streambtw",
"dlhd",
],
):
data = await fetch_last_run(
request.app.state.redis, spider_name, const.SCRAPY_SPIDERS[spider_name]
)
return data
async def update_metrics(request: Request):
# Update torrent count
total_torrents = await get_total_torrents()
total_torrents_gauge.set(total_torrents["total_torrents"])
# Update metadata counts
results = await get_total_metadata()
metadata_count_gauge.labels(metadata_type="movies").set(results["movies"])
metadata_count_gauge.labels(metadata_type="series").set(results["series"])
metadata_count_gauge.labels(metadata_type="tv_channels").set(results["tv_channels"])
# Update spider metrics
stats = await get_schedulers_last_run(request)
for spider_name, data in stats.items():
spider_last_run_gauge.labels(spider_name=spider_name).set(
data["time_since_last_run_seconds"]
)
@metrics_router.get("/prometheus-metrics", tags=["metrics"])
async def prometheus_metrics(request: Request):
await update_metrics(request)
return Response(content=generate_latest(), media_type=CONTENT_TYPE_LATEST)
+3 -12
View File
@@ -40,18 +40,9 @@
<div class="mb-3">
<label for="spiderName" class="form-label">Spider Name</label>
<select class="form-select" id="spiderName" name="spider_name">
<option value="formula_tgx">Formula TGX</option>
<option value="mhdtvworld">MHDTV World</option>
<option value="mhdtvsports">MHDTV Sports</option>
<option value="tamilultra">Tamil Ultra</option>
<option value="sport_video">Sport Video</option>
<option value="streamed">Streamed Sport Events</option>
<option value="mrgamingstreams">MrGamingStreams Sport Events</option>
<option value="tamil_blasters">TamilBlasters</option>
<option value="tamilmv">TamilMV</option>
<option value="crictime">CricTime</option>
<option value="streambtw">StreamBTW</option>
<option value="dlhd">DaddyLiveHD</option>
{% for spider_id, spider_name in scrapy_spiders %}
<option value="{{spider_id}}">{{spider_name}}</option>
{% endfor %}
</select>
</div>
<!-- Additional Parameters based on Spider Selection -->
+15
View File
@@ -148,3 +148,18 @@ M3U8_VALID_CONTENT_TYPES = [
"video/mp2t",
"application/octet-stream",
]
SCRAPY_SPIDERS = {
"formula_tgx": "Formula TGX",
"mhdtvworld": "MHDTV World",
"mhdtvsports": "MHDTV Sports",
"tamilultra": "Tamil Ultra",
"sport_video": "Sport Video",
"streamed": "Streamed Sport Events",
"mrgamingstreams": "MrGamingStreams Sport Events",
"tamil_blasters": "TamilBlasters",
"tamilmv": "TamilMV",
"crictime": "CricTime",
"streambtw": "StreamBTW",
"dlhd": "DaddyLiveHD",
}