ODOO Как запускать автоматические действия в определенное время каждый день

Я пытаюсь добавить задание cron, которое должно запускаться каждый день в 12 часов дня. Я столкнулся с несколькими проблемами и имею несколько сомнений.

  1. Я мог запускать его каждую минуту, но не мог запускать его в определенное время.

  2. Как узнать, какой часовой пояс ожидается и какой часовой пояс установлен в поле «nextcall»

  3. Он не запускается, пока я не открою консоль в браузере. Как сделать так, чтобы он запускался на сервере и никаких дополнительных действий не требовалось?

        <record id="ir_cron_module_get_active_sr" model="ir.cron">
            <field name="name">Get Active Srs</field>
            <field name="user_id" ref="base.user_root" />
            //<field name="interval_number">2</field>
            //<field name="interval_type">minutes</field>
            <field name="numbercall">-1</field>
            <field name="nextcall" eval="(datetime.utcnow() + timedelta(days=0)).strftime('%Y-%m-%d 12:22:00')" />
            <field name="doall" eval="True"  />
            <field name="model" eval="'sd.cron'"  />
            <field name="function" eval="'get_active_srs'" />
            <field name="args" eval="'(None,)'" />
            <field name="priority">1</field>
        </record>
    

person ashwin mahajan    schedule 30.06.2017    source источник
comment
Возможный дубликат ODOO: запуск cron в определенное время   -  person Alpesh Valaki    schedule 02.07.2017
comment
Проблема заключалась в том, что он не отражал внесенные мной изменения. Код работает так, как ожидалось.   -  person ashwin mahajan    schedule 02.07.2017


Ответы (1)


Возможно, вы пропускаете эту строку:

<field name="active">True</field>

Функционально вы можете проверить это под Settings --> Automation --> Scheduled Actions с активированным режимом дебюта.

Что я вижу в вашем коде, так это то, что эти 2 строки плохо прокомментированы (вы хотели их прокомментировать или это была ошибка копирования пасты?)

//<field name="interval_number">2</field>
//<field name="interval_type">minutes</field>

Проверьте, подходит ли это время для запуска следующего теста, это время UCT, вы можете проверить время UTC в Linux с помощью timedatectl на терминале (по крайней мере, в Ubuntu)

<field name="nextcall" eval="(datetime.utcnow() + timedelta(days=0)).strftime('%Y-%m-%d 12:22:00')" />

Я не знаю, в каком контексте вы используете этот cron, но помните, что модель должна быть той, которая содержит функцию, которую вы вызываете. Итак, убедитесь, что sd.cron имеет метод get_active_srs

<field name="model" eval="'sd.cron'"  />

В конце, если вы не передаете никаких аргументов, вы можете опустить эту строку.

<field name="args" eval="'(None,)'" />
person miphos    schedule 30.06.2017
comment
Как удалить задание cron? Я удалил запись данных и обновил модуль, но он все еще работает. Опция настроек не добавлена, поэтому я не могу использовать Settings --> Automation --> Scheduled Actions. Как сразу удалить cron? - person ashwin mahajan; 01.07.2017
comment
У вас есть несколько вариантов, но я упомяну только 3 варианта: 1) Удалите модуль и переустановите его 2) С базой данных, сначала SELECT id,name,model FROM ir_cron;, затем DELETE FROM ir_cron WHERE id=X; 3) Войдите в систему как администратор и активируйте режим отладки. - person miphos; 01.07.2017
comment
Нет, но это простой вариант. Я рекомендую вам использовать опцию settings с отладкой. Ваш сервер находится в производстве или он локальный? - person miphos; 01.07.2017
comment
Он локальный для разработки, но будет запущен в производство. Я попробовал вариант с базой данных, и он работает без проблем. И я добавил поле active, не знаю, сработало ли оно из-за этого, но оно работает. Спасибо за быстрый ответ. - person ashwin mahajan; 01.07.2017