定期向某个服务器发送信号(短信)?

时间:2017-10-13 09:15:23

标签: python multithreading

我在SO上的第一篇文章(兴奋)。我目前正在我(客户端)和一些远程机器(服务器)之间实现消息传递系统。现在这个服务器在周末进行维护。我有一个使用log_in方法和log_out方法的消息传递会话的课程。

class MessagingSession():
    def log_in():
        # some log in code
        # ...
    def log_out():
        # some log out code
        # ...

我的问题是如何编写一些在后台运行的函数/方法,定期检查时间以及何时注销调用log_out函数以及何时登录调用{{1功能。

3 个答案:

答案 0 :(得分:2)

您可以使用while循环从Thread模块创建threading并在其中睡眠以检查每n秒的时间,如果是(过去)所需的时间,则可以打电话给你的方法。

from threading import Thread
import time

def check_time(logout_time, sleep_milliseconds):
    while time.time() < logout_time:
        time.sleep(sleep_milliseconds)
    logout()

Thread(target=check_time, daemon=True, args=(logout_time, 1000)).start()

这只是一些粗略的代码,你必须从你自己的代码填写一些空白并把它放在适当的位置,但你明白了。

答案 1 :(得分:0)

使用时间库:

import time
currTime = time.strftime("%H:%M:%S")
setTime = "00:00:00"
if currTime == setTime:
    #logout

如果您想与主程序并排运行,请查找多线程。

答案 2 :(得分:0)

您可以使用作为python模块的线程。如果条件满足,您可以尝试创建一个每隔X秒循环检查的线程。

这里有一个可能有用的代码示例:

import threading
import time
def check_time():
    interval = 40 # in seconds
    while 1:
        time.sleep(interval)
        # Call your methods here

t1 = threading.Thread(target=check_time, name='Thread1')
t1.daemon = True
t1.start()

使用线程作为守护进程的好处是你可以在执行中忘记它。当您运行程序时,它将执行您的后台任务,而无需关闭或关注它。