Navigation

    Odoo 中文社区

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    • Users
    • Groups

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    Scheduler、Debug等OpenERP开发的几个小问题备注

    Odoo 开发与实施交流
    4
    7
    7820
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      NewZN last edited by

      [b]第一个问题,OpenERP的调度器(Scheduler)[/b]
          关于Scheduler的概念介绍,参考老肖的《OpenERP应用和开发基础》“第九章 Request,Sequence and Scheduler”章节,这里要说的是OpenERP在实际使用中的一点小问题。
          在WindowXP平台,OpenERP 5.06版的试验中发现,设定某个任务今天几点几分几秒运行,但它总是不会运行,而是要等到明天的同一时间才会运行。经调试发现,问题出在addons\base\ir\ir_cron.py 的下述代码行(V5.06 是第93行):
      while nextcall < now and numbercall:
      该行的意思是,任务设定的调用时间(nextcall)早于当前时间(now)时,执行Schedule的任务。但调试发现,在WindowsXP上,该行代码的调用时间基本上总是在nextcall的时候,该时候取到的当前时间(now)也总是等于nextcall,这就导致Scheduler的任务不被调用。
            如果nextcall之后没有别的Scheduler,系统会自动在一天后再次执行Scheduler检查,此时,nextcall是昨天的时间,now是今天的时间,nextcall < now,因此,本应该昨天执行的任务,延迟到今天才执行。
          修正方法,只要将该行代码改成 nextcall <= now 即可,在WindowsXP上测试OK。

      [b]第二个问题,OpenERP的调试[/b]
          可以使用Python的调试器来调试OpenERP,坛子也有相关方法介绍。不过,对于大型程序,调试器总是不太好用,使用复杂,效率也不高。这是个普遍问题,不仅仅是python语言的问题。对于大型程序,通常用添加Debug Message的办法调试,在OpenERP中,添加Debug Message的方法如下。
              import netsvc
              ......
              logger = netsvc.Logger()
              logger.notifyChannel("Debug", netsvc.LOG_DEBUG, "Your Debug Message")

      为了简化调试,还可以编写一个简单的独立的Python小程序用于调试,该小程序以XML-RPC方式调用被调试代码,这样的话,不用从界面上操作调试,效率高得多。

      [b]第三个问题,代码行中的中文[/b]
          如果在代码行中直接写中文,如:
              subject = "合同[%(contract)s]通知" % {'contract':res.contract_id.name}
      会有异常抛出,程序在该行中断执行。解决方法很简单,改成如下即可。
              subject = "合同[%(contract)s]通知".decode('utf-8') % {'contract':res.contract_id.name}

      1 Reply Last reply Reply Quote 0
      • Joshua
        Joshua 管理员 last edited by

        1.现在我调试还是使用很原始的log的方法
              fp =file('e:\temp.log','a')
                fp.write("log:"+message+'\r\n')
                fp.close()

        2.XML-RPC方式调用被调试代码,能给个例子么... 🙂

        Thank you old xiao

        1 Reply Last reply Reply Quote 0
        • N
          NewZN last edited by

          > 2.XML-RPC方式调用被调试代码,能给个例子么...
          XML-RPC方式调用被调试对象的方法,参见《深入理解OpenERP的对象》, [检测到链接无效,已移除]

          1 Reply Last reply Reply Quote 0
          • mrshelly
            mrshelly last edited by

            http://doc.openerp.com/developer/6_22_XML-RPC_web_services/index.html#python-example

            1 Reply Last reply Reply Quote 0
            • mrshelly
              mrshelly last edited by

              sock.execute(帐套名, 用户ID(一般为1 即admin), 用户密码, 对象串(如 account.move), 方法(如 'create', '_query_get'), 参数s)

              1 Reply Last reply Reply Quote 0
              • S
                stbrine last edited by

                收藏

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post