首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扭曲的web服务器:发送响应后执行延迟操作

扭曲的web服务器:发送响应后执行延迟操作
EN

Stack Overflow用户
提问于 2017-12-13 15:52:18
回答 1查看 80关注 0票数 0

我有一个简单的web服务,定义为:

代码语言:javascript
复制
from twisted.internet import endpoints
from twisted.internet import reactor
from twisted.web import resource
from twisted.web import server

class TestService(resource.Resource):
    def render_GET(self, request):
        return "ok"

ts = TestService()
endpoints.serverFromString(reactor, "tcp:{}".format(8080)).listen(server.Site(ts))
reactor.run()

此服务总是在每个GET请求上发送ok。

很好。

但我需要在请求处理后1分钟执行延迟操作。

我该怎么做呢?

我的意思是这样的:

代码语言:javascript
复制
from twisted.internet import endpoints
from twisted.internet import reactor
from twisted.web import resource
from twisted.web import server

def deferred_action():
    time.sleep(60)
    # do some action...
    print("action completed")

class TestService(resource.Resource):
    def render_GET(self, request):
        defer(deferred_action) # how do I do this?
        return "ok"

ts = TestService()
endpoints.serverFromString(reactor, "tcp:{}".format(8080)).listen(server.Site(ts))
reactor.run()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-13 16:19:56

您可以使用反应堆的callLater()方法:

代码语言:javascript
复制
reactor.callLater(60.0, deferred_action)

还可以添加更多的参数,然后将其传递到deferred_action函数中。当然,它需要接受它们。

代码语言:javascript
复制
def deferred_action(value):
    print(value)

class TestService(resource.Resource):
    def render_GET(self, request):
        reactor.callLater(60.0, deferred_action, 'some value')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47797201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档