WIS2 Downloader هو تطبيق Python يستند إلى Flask ويسمح لك بالاتصال بـ WIS2 Global Broker، وإدارة الاشتراكات في التسلسلات الهرمية للموضوعات، وتكوين أدلة التنزيل المرتبطة بها.
/metrics
، وهي مثالية لتصور Grafana.python -m pip install wis2downloader
قم بإنشاء ملف config.json
في دليلك المحلي الذي يتوافق مع المخطط التالي:
schema :
type : object
properties :
base_url :
type : string
description :
Base URL for the wis2downloader service.
example : http://localhost:5050
broker_hostname :
type : string
description : The hostname of the global broker to subscribe to.
example : globalbroker.meteo.fr
broker_password :
type : string
description : The password to use when connecting to the specified global broker.
example : everyone
broker_port :
type : number
description : The port the global broker is using for the specified protocol.
example : 443
broker_protocol :
type : string
description : The protocol (websockets or tcp) to use when connecting to the global broker.
example : websockets
broker_username :
type : string
description : The username to use when connecting to the global broker.
example : everyone
download_workers :
type : number
description : The number of download worker threads to spawn.
example : 1
download_dir :
type : string
description : The path to download data to on the server/computer running the wis2downloader.
example : ./downloads
flask_host :
type : string
description : Network interface on which flask should listen when run in dev mode.
example : 0.0.0.0
flask_port :
type : number
description : The port on which flask should listen when run in dev mode.
example : 5050
log_level :
type : string
description : Log level to use
example : DEBUG
log_path :
type : string
description : Path to write log files to.
example : ./logs
min_free_space :
type : number
description :
Minimum free space (GB) to leave on download volume / disk after download.
Files exceeding limit will not be saved.
example : 10
save_logs :
type : boolean
description : Write log files to disk (true) or stdout (false)
example : false
mqtt_session_info :
type : string
description :
File to save session information (active subscriptions and MQTT client id) to.
Used to persist subscriptions on restart.
example : mqtt_session.json
validate_topics :
type : boolean
description : Whether to validate the specified topic against the published WIS2 topic hierarchy.
example : true
ويرد مثال أدناه:
{
"base_url" : " http://localhost:5050 " ,
"broker_hostname" : " globalbroker.meteo.fr " ,
"broker_password" : " everyone " ,
"broker_port" : 443 ,
"broker_protocol" : " websockets " ,
"broker_username" : " everyone " ,
"download_workers" : 1 ,
"download_dir" : " downloads " ,
"flask_host" : " 0.0.0.0 " ,
"flask_port" : 5050 ,
"log_level" : " DEBUG " ,
"log_path" : " logs " ,
"min_free_space" : 10 ,
"mqtt_session_info" : " mqtt_session.json " ,
"save_logs" : false ,
"validate_topics" : true
}
لينكس (باش)
export WIS2DOWNLOADER_CONFIG= < path_to_your_config_file >
ويندوز (موجه الأوامر)
set WIS2DOWNLOADER_CONFIG= < path_to_your_config_file >
ويندوز (باورشيل)
$env :WIS2DOWNLOADER_CONFIG = < path_to_your_config_file >
وضع التطوير (Windows وLinux)
wis2downloader
استخدام gunicorn (Linux فقط)
gunicorn --bind 0.0.0.0:5050 -w 1 wis2downloader.app:app
ملاحظة : يتم دعم عامل واحد فقط نظرًا لأن أداة التنزيل تنتج سلاسل رسائل إضافية واستمرار اتصالات MQTT.
يجب أن يكون تطبيق Flask قيد التشغيل الآن. إذا كنت بحاجة إلى إيقاف التطبيق، يمكنك القيام بذلك في الوحدة الطرفية باستخدام Ctrl+C
.
يمكن العثور على تعريف واجهة برمجة التطبيقات لبرنامج التنزيل عند نقطة النهاية /swagger
، عند تشغيله محليًا، راجع [http://localhost:5050/swagger]. يتضمن ذلك القدرة على تجربة نقاط النهاية المختلفة.
يمكن إضافة الاشتراكات عبر طلب POST إلى نقطة النهاية /subscriptions
. يجب أن يكون نص الطلب مشفرًا بـ JSON وأن يلتزم بالمخطط التالي:
schema :
type : object
properties :
topic :
type : string
description : The WIS2 topic to subscribe to
example : cache/a/wis2/+/data/core/weather/surface-based-observations/#
target :
type : string
description : Sub directory to save data to
example : surface-obs
required :
- topic
في هذا المثال، سيتم الاشتراك في جميع الإخطارات المنشورة حول موضوع surface-based-observations
من أي مركز WIS2، مع كتابة البيانات التي تم تنزيلها في الدليل surface-obs
الخاص بالملف download_dir
.
ملحوظات:
target
، فسيتم تعيينه افتراضيًا على الموضوع الذي يتم نشر البيانات عليه.+
لتحديد أي تطابق على مستوى واحد، مطابقًا لمركز WIS2 في المثال أعلاه.#
مع أي موضوع عند المستوى الذي يحدث فيه أو أقل منه. في المثال أعلاه، سيتم مطابقة أي موضوع منشور أدناه ذاكرة التخزين المؤقت/a/wis2/+/data/core/weather/surface-based-observations. curl -X ' POST '
' http://127.0.0.1:5050/subscriptions '
-H ' accept: application/json '
-H ' Content-Type: application/json '
-d ' {
"topic": "cache/a/wis2/+/data/core/weather/surface-based-observations/#",
"target": "surface-obs"
} '
يتم حذف الاشتراكات عبر طلب DELETE إلى نقطة النهاية /subscriptions/{topic}
حيث يكون {topic}
هو الموضوع الذي سيتم إلغاء الاشتراك منه.
curl -X DELETE http://localhost:5050/subscriptions/cache/a/wis2/%2B/data/core/weather/%23
يؤدي هذا إلى إلغاء الاشتراك cache/a/wis2/+/data/core/weather/#
. لاحظ الحاجة إلى تشفير URL للرمزين +
( %2B
) و #
( %23
).
يمكن إدراج الاشتراكات الحالية عبر طلب GET إلى نقطة نهاية /subscriptions
.
curl http://localhost:5050/subscriptions
يجب أن يتم إرجاع قائمة الاشتراكات النشطة ككائن JSON.
يتم العثور على مقاييس Prometheus لبرنامج التنزيل عبر طلب GET إلى نقطة النهاية /metrics
.
curl http://localhost:5050/metrics
تتم إدارة جميع الأخطاء والتحسينات والمشكلات على GitHub.