定時操作是許多應(yīng)用都需要使用的一個功能。
在python的web開發(fā)世界中级历,芹菜 celery是一個非常好的解決方案释移。工作原理是運行一個daemon,定期掃描redis或者庫中的記錄寥殖,然后執(zhí)行相應(yīng)的任務(wù)玩讳。
在nameko中,做定時會更加自然嚼贡,在微服務(wù)類中的每個方法熏纯,都可以隨時變成一個定時執(zhí)行的工作狂。
from nameko.timer import timer
from nameko.rpc import rpc,RpcProxy
class ServiceA:
name = "serviceA"
serviceB = RpcProxy('serviceB')
#采用定時器的方式調(diào)用另外微服務(wù)的方法
@timer(5)
@rpc
def periodically_call_rpc_method(self):
print(self.serviceB.provide_service_for_others()
#普通定時器
@timer(10)
def periodically_say_hello(self):
print('I am a common timer')
class ServiceB:
name = 'serviceB'
@rpc
def provide_service_for_others(self):
return 'hello,I am a rpc service for you'
說明:
- ServiceA調(diào)用ServiceB的方法
- 注意調(diào)用者的裝飾器的順序粤策,先timer樟澜,后rpc。