我如何安排我的桌面应用程序(PyQt)以一定的时间间隔发送电子邮件
How do I schedule my desktop application(PyQt) to send emails at some intervals
所以,我构建了这个不错的应用程序(using camelot) and do not know how to implement a scheduled job on it, that can send emails based on some conditions at regular intervals. I am trying to implement it using schedule 但不知道如何让我的应用程序自动调用它。
这是我的代码:
import time, schedule
def job():
print "I'm working..."
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
当我启动我的应用程序时,没有任何效果。我如何让我的应用程序意识到这一点。
如果可能的话,我希望这个计划作业在不启动我的应用程序的情况下执行。
如果你想安排与用户交互的作业,你必须使用 Camelot Actions,它们有自己的方法在模型线程中执行函数,发布结果到 GUI 线程,然后返回...
但您不需要那个,您只需要 运行 作业(函数)即可访问数据库、创建电子邮件并发送,无需与用户交互。这可以通过完全独立的应用程序来完成,无需 GUI。
为了避免创建两个应用程序,您可以使用命令行参数更改行为。如果您在没有任何参数的情况下启动应用程序,它将像往常一样打开 GUI,但是如果您使用 运行 它和 -background
,它只会启动计划循环。
然后,您可以在系统启动时挂接您的应用程序,使用“-background”执行它,您将拥有 运行ning 计划,而无需您的用户启动应用程序。
如果稍后用户启动应用程序,那么您将有两个实例 运行ning,第一个 运行ning 调度循环,第二个带有 GUI。
main.py:
if __name__ == '__main__':
import sys
if "-background" in sys.argv:
import background
background.main()
else:
main() #camelot's main
background.py:
from camelot.core.orm import Session
import time, schedule
def job():
session = Session()
#Use session to access and manipulate model
print "I'm working..."
session.flush() #flush session to DB
def main():
from camelot.core.conf import settings
settings.setup_model()
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
您应该 运行 具有 python main.py -background
的应用程序。
所以,我构建了这个不错的应用程序(using camelot) and do not know how to implement a scheduled job on it, that can send emails based on some conditions at regular intervals. I am trying to implement it using schedule 但不知道如何让我的应用程序自动调用它。 这是我的代码:
import time, schedule
def job():
print "I'm working..."
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
当我启动我的应用程序时,没有任何效果。我如何让我的应用程序意识到这一点。 如果可能的话,我希望这个计划作业在不启动我的应用程序的情况下执行。
如果你想安排与用户交互的作业,你必须使用 Camelot Actions,它们有自己的方法在模型线程中执行函数,发布结果到 GUI 线程,然后返回...
但您不需要那个,您只需要 运行 作业(函数)即可访问数据库、创建电子邮件并发送,无需与用户交互。这可以通过完全独立的应用程序来完成,无需 GUI。
为了避免创建两个应用程序,您可以使用命令行参数更改行为。如果您在没有任何参数的情况下启动应用程序,它将像往常一样打开 GUI,但是如果您使用 运行 它和 -background
,它只会启动计划循环。
然后,您可以在系统启动时挂接您的应用程序,使用“-background”执行它,您将拥有 运行ning 计划,而无需您的用户启动应用程序。
如果稍后用户启动应用程序,那么您将有两个实例 运行ning,第一个 运行ning 调度循环,第二个带有 GUI。
main.py:
if __name__ == '__main__':
import sys
if "-background" in sys.argv:
import background
background.main()
else:
main() #camelot's main
background.py:
from camelot.core.orm import Session
import time, schedule
def job():
session = Session()
#Use session to access and manipulate model
print "I'm working..."
session.flush() #flush session to DB
def main():
from camelot.core.conf import settings
settings.setup_model()
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
您应该 运行 具有 python main.py -background
的应用程序。