Rasa ReminderScheduled делает сбой программы, ошибка с часовым поясом - PullRequest
0 голосов
/ 16 мая 2018

Я пытался использовать Rasa's ReminderScheduled, как указано в документации.Я использую Windows 10 с подсистемой Ubuntu для запуска кода.Код, вызывающий напоминание, выглядит следующим образом:

export_timeout = datetime.timedelta(seconds=30)
class ActionGiveListProducts(Action):
    def name(self):
        return 'action_give_list_products'

    def run(self, dispatcher, tracker, domain):
        s = getInfo("listeproduits")
        dispatcher.utter_message(s)
        return [ReminderScheduled("action_export_logs", datetime.datetime.now() + export_timeout)]

Выполнение этого действия вызывает следующую ошибку:

    Traceback (most recent call last):                                                                                        
File "bot.py", line 136, in <module>   
run()                                                                                                                 
File "bot.py", line 108, in run agent.handle_channel(ConsoleInputChannel())                                                                           
File "/usr/local/lib/python3.5/dist-packages/rasa_core/agent.py", line 126, in handle_channel                             
processor.handle_channel(input_channel)                                                                               
File "/usr/local/lib/python3.5/dist-packages/rasa_core/processor.py", line 60, in handle_channel                          
input_channel.start_sync_listening(self.handle_message)                                                               
File "/usr/local/lib/python3.5/dist-packages/rasa_core/channels/console.py", line 52, in start_sync_listening             
self._record_messages(message_handler)                                                                                
File "/usr/local/lib/python3.5/dist-packages/rasa_core/channels/console.py", line 45, in _record_messages                 
self.sender_id))                                                                                                      
File "/usr/local/lib/python3.5/dist-packages/rasa_core/processor.py", line 83, in handle_message                         
self._predict_and_execute_next_action(message, tracker)                                                               
File "/usr/local/lib/python3.5/dist-packages/rasa_core/processor.py", line 262, in _predict_and_execute_next_action       
dispatcher)                                                                                                           
File "/usr/local/lib/python3.5/dist-packages/rasa_core/processor.py", line 312, in _run_action                            
self._schedule_reminders(events, dispatcher)                                                                          
File "/usr/local/lib/python3.5/dist-packages/rasa_core/processor.py", line 296, in _schedule_reminders                    
replace_existing=True)                                                                                                
File "/usr/local/lib/python3.5/dist-packages/apscheduler/schedulers/base.py", line 413, in add_job                        
'trigger': self._create_trigger(trigger, trigger_args),                                                               
File "/usr/local/lib/python3.5/dist-packages/apscheduler/schedulers/base.py", line 907, in _create_trigger                
return self._create_plugin_instance('trigger', trigger, trigger_args)                                                 
File "/usr/local/lib/python3.5/dist-packages/apscheduler/schedulers/base.py", line 892, in _create_plugin_instance        
return plugin_cls(**constructor_kwargs)                                                                               
File "/usr/local/lib/python3.5/dist-packages/apscheduler/triggers/date.py", line 20, in __init__                          
timezone = astimezone(timezone) or get_localzone()                                                                    
File "/usr/local/lib/python3.5/dist-packages/apscheduler/util.py", line 86, in astimezone                                 
    'Unable to determine the name of the local timezone -- you must explicitly '                                        
    ValueError: Unable to determine the name of the local timezone -- you must explicitly 
specify the name of the local timezone. 
Please refrain from using timezones like EST to prevent problems with daylight saving time. 
Instead, use a locale based timezone name (such as Europe/Helsinki).

Я попытался установить часовой пояс в коде запуска следующим образом:

os.environ['TZ'] = 'Europe/London'
time.tzset()

но это ничего не изменило.Я также искал другие решения, но не нашел ничего подходящего.Кто-нибудь знает, что именно вызывает эту ошибку и есть ли способ ее устранить?

Ответы [ 2 ]

0 голосов
/ 09 августа 2019

В подсистеме Ubuntu для Windows работает следующее:

sudo cp /usr/share/zoneinfo/America/New_York /etc/localtime
TZ=America/New_York rasa x

Вы также можете сделать постоянную переменную среды TZ, добавив export TZ=America/New_York в файл ~/.bashrc.

0 голосов
/ 17 мая 2018

Я предполагаю, что вы запускаете это в среде Linux (поскольку у меня была такая же ошибка), поэтому попробуйте установить следующее:

сохраните, как было в коде Python:

keepos.environ['TZ'] = 'Europe/London'

, а также установить часовой пояс в ОС:

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

Это сработало для меня.

...