الإنسان جدول مقروء بناء الجملة مثل وظيفة في بلدي التطبيق?
-
13-12-2019 - |
سؤال
كرون في محرك التطبيق جوجل لديها بناء جملة مقروء الإنسان لجدولة وظيفة كرون.
https://developers.google.com/appengine/docs/python/config/cron#The_Schedule_Format
كيف يمكنني تنفيذ وظائف مماثلة في طلبي ، حيث استخدام إدخال الجدول الزمني في الإنسان تنسيق قابل للقراءة وبرنامج تحليل وتخزين القيمة الفعلية ?
تحرير:أعتقد أنهم يستخدمون مكتبة أنتلر3 ، لكنني لم أتمكن من معرفة كيفية استخدامها.
المحلول
حسنا ، في هذه الحالة ، هناك نقطتان تحتاج إلى النظر فيهما.
أولا أنتلر هو ما يمنحك محلل لتحليل الإنجليزية / الإنسان تنسيقات قابلة للقراءة في البرنامج الخاص بك كما تيار من الرموز.من هذه السلسلة سوف ثم تحديد معنى مثل:
run backup every 2 days
والتي من شأنها أن تتحول إلى تيار من الرموز مثل:
<command_type> := run
<command_to_run> := backup
<time_frame_times> := every
<digit> := 2
<time_frame_modifier> := days
من هنا ستحدد بعد ذلك معنى الجملة باستخدام نوع من آلة الحالة التي يمكن كتابتها (شكل مبسط) على النحو التالي:
if token == command_type:
switch( token.val )
case "run":
state = run
program = tokens.pop().val
if token == time_frame_times:
switch( token.val )
case "every":
time_frame_state = repeat_indefinitely
if token == time_frame_modifier:
switch( token.val )
case "days":
time_frame_modifier = every_N_days
if token == digit:
switch( time_Frame_modifier )
case every_N_days:
time_frame_modifier_value = token.val
شيء من هذا القبيل يكفي لتحليل السلسلة إلى القيم المطلوبة.
الجزء الثاني سيكون لربط هذا في cron
نفسها أو كتابة جدولة الخاصة بك داخل البرنامج نفسه الذي أعتقد أنه أكثر على غرار حالة الاستخدام الخاصة بك.
أنتلر بايثون: http://www.antlr.org/wiki/display/ANTLR3/Python+runtime