目标是让一个后台运行的进程每3-4分钟在SAP中执行一次操作。该函数作为方法运行时没有问题,但是作为线程运行时遇到错误(如下所示)。
class TimeOutPreventer(object):
def __init__(self, interval=10):
self.interval = interval
thread = threading.Thread(target=self.run, args=())
thread.daemon = True
thread.start()
def run(self):
while True:
global connection
global session
session.findById("wnd[0]/tbar[0]/okcd").text = "/oabc"
session.findById("wnd[0]").sendVKey(0)
time.sleep(self.interval)
这会产生错误:
>>> Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\ […] \lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "C:\ […] \lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "C:\ […] \test.py", line 61, in run
session.findById("wnd[0]/tbar[0]/okcd").text = "/nQA32"
File "C:\ […] \lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.findById
为了进行测试,我创建了一个方法来执行相同的任务,并故意拼错了findById以跟踪没有线程的错误。
Traceback (most recent call last):
File "C:\ […] \ test.py", line 78, in Prevent_Timeout
session.findBydId("wnd[0]/tbar[0]/okcd").text = "/nQA32"
File "C:\ […] \lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.findBydId
我将继续自己进行这项工作,直到/除非这里有人知道我在做什么错。如果我自己设法解决此问题,我将发布方法。