У меня есть cron, который вызывает метод my_cron_method (), определенный таким образом (упрощенно):
class MyModel(models.Model):
model_cron_id = fields.Many2one('ir.cron', 'Cron Scheduled Action')
def my_cron_method(self):
object_list = self.env['my.model']
for object in object_list:
print('ck_1')
object.att_a = 123
self.update_obj(object)
print('ck_4')
def update_obj(self, object):
print('ck_2')
object.att_b='abc'
print('ck_3')
return
Результат при выполнении cron:
ck_1
ck_2
, поэтому метод "freeses "at object.att_b = 'abc' row.
Это происходит только в том случае, если значение model_cron_id равно значению;если object_list имеет два элемента, а valorized - второй, первый полностью разработан.
Я использую отладку PyCharm, чтобы следовать пошаговому выполнению, и когда я подтверждаю выполнение строки, он блокируется, ничего больше не делая.
Я пытался приостановить выполнение на шаг раньше и выполнить на консоли object._write({'att_a' : 123})
, и он тоже блокируется. Остальная часть Odoo, кажется, идет хорошо, блокируется только объект на запись.
Если я запускаю cron вручную, все идет хорошо.
Есть идеи?
EDIT
Я добавляю информацию о model_cron_id, потому что я обнаружил, что именно этот элемент создает проблему.