首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CFTHREAD CFHTTP超时

CFTHREAD CFHTTP超时
EN

Stack Overflow用户
提问于 2013-07-19 06:10:46
回答 1查看 2.8K关注 0票数 1

基本上,我有一个作业调度引擎,它从cfthread标记中执行cfhttp调用。这是为了让多个作业可以同时运行。基本上,我想要做的是将超时时间延长到管理员对我的一些cfhttp调用的默认值之外,这样我就可以让它们完成并从我调用的页面获得结果。但这是不可能的。

我的CF管理请求超时设置为30秒。我有两份文件。第一个叫做'MyThreadedCFHTTP.cfm':

代码语言:javascript
复制
<cfthread action="run" name="job_#CreateUUID()#">
    <cfsetting requesttimeout="400" >
    <cflog text="Web Service Request: Starting" file="JobSchedulerTest" >  

    <!--- Lets do our cfhttp call --->
    <cfset var httpResults = ""/>
    <cfhttp method="get" url="http://localhost:8500/sessiontesting/CFHTTPRequestTimeOut/GetResults.cfm?RequestTime=400" result="httpResults" timeout="400"> 

    <cflog text="Web Service Result: #httpResults.FileContent#" file="JobSchedulerTest" >    
</cfthread>**strong text**

我调用的cfm文件是'GetResults.cfm‘。在做任何事情之前,它只会休眠59秒。

代码语言:javascript
复制
<cfsetting requesttimeout="400"/>
<cfset sleep(59000)/>

这并不像预期的那样工作。尽管cfhttp调用的超时时间为400秒,而且我在它之前有一个cfsetting/requesttimeout值,但它将在30秒后中止,并显示一条连接超时消息。这是服务器的默认设置。现在有趣的是,如果您删除标记,调用将成功完成。

我假设这与cfhttp调用在一些全新的上下文中执行的线程有关,因此它只能看到管理员的请求超时值。但我只是在猜测。

有人能帮我想出一个解决方案吗。我可以从管理员那里删除超时值,但我真的很讨厌这样做,因为我更愿意保留它,只有在我显式声明时才会覆盖它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-19 20:24:13

我对此没有任何个人经验,但经过一些搜索后,似乎<cfthread>标签并不支持<cfsetting requesttimeout="">代码。请参阅我找到的以下参考资料。

请注意,我并不是建议您进行详细说明的更改,如在ColdFusion管理员中禁用请求超时设置。我不认为这是个好主意,,我只是在传递我找到的信息。要点是<cfthread>标签不支持<cfsetting requesttimeout="">选项。因此,您可能需要找到另一种方法来完成所需的操作,或者优化代码以在设置的超时之前完成。

cfthread and request timeout in coldfusion

在这个过程中,经过一些测试和尝试,我发现了以下内容:

  1. 如果设置了CF管理面板超时,CFthread基本上会遵守它,并在超时时间后终止线程。
  2. 它不会遵守在onRequestStart或代码中的任何地方使用CFsetting标记设置的请求超时。
  3. 仍然有某些标记不遵守CFthread请求超时,它们是CFFTP、CFX、CFX标记和CFX

Increase request timeout for a thread in CFML

正如您所看到的,我已经尝试在线程顶部添加一个<cfsetting requestTimeout=240 />,以使其存活时间更长……没有骰子。

Am I utilizing correctly for this solution?

对于线程超时-你可以指定等待你创建的线程重新加入页面执行的最大时间,但是AFAIK没有办法在你创建的线程上设置超时(比如页面请求超时)。

Charlie Arehart有一篇关于ColdFusion请求超时的很好的文章-- CF911: Lies, Damned Lies, and CF Request Timeouts...What You May Not Realize

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17734819

复制
相关文章

相似问题

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