以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]在执行计划的时候,HttpRequest好像是无响应的,怎么解决?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123576)

--  作者:浙江仔
--  发布时间:2018/8/18 9:20:00
--  [求助]在执行计划的时候,HttpRequest好像是无响应的,怎么解决?
如题,我用计划管理,设置了微信模板消息的发送,因为发送数量比较多,所以发送消息使用了异步函数。
计划管理是用遍历的方式,调取发送对象,提交异步发送的

在此计划执行过程中,异步发送耗时减少了很多,但是在执行过程中,HttpRequest好像也是无法响应的,程序也处于无响应状态

应该怎么修改计划管理的事件代码?

--  作者:有点蓝
--  发布时间:2018/8/18 9:27:00
--  
代码呢,不给出来别人怎么改?

这种建议分项目,把计划管理独立出来单独运行
--  作者:浙江仔
--  发布时间:2018/8/18 9:38:00
--  
计划管理代码:
If Vars("WX_TM_Send") >0 Then
    Vars("WX_TM_Send")=0
    Dim fileid  As String
    Dim s4 As String
    Dim urls As String
    Dim state As Integer

    Do
        Dim pdr As DataRow=DataTables("Wechat_TM_Send_List").SQLFind("state> 0  and type =\'file\' ")
        If pdr IsNot Nothing Then
            fileid =pdr("fileid")
            s4=pdr("remarks")
            urls=pdr("urls")
            state=pdr("state")
        Else
            Exit Do
        End If
        
        \'output.show(fileid )
        
        Dim fdr As DataRow= DataTables("C_PYH_WorkFile_DTL").SQLFind("Work_id=\'"& fileid &"\' and is_active=\'1\' ")
        If fdr IsNot Nothing Then
            For Each dr As DataRow In DataTables("S_PYH_WCHACT_INFO").SQLSelect("IS_ACTIVE=\'1\' and enterprise_id > \'\' ")
                Dim pdcode As String =Functions.Execute("getProdCodeByid",dr("enterprise_id"))
                If pdcode<>"" Then
                    If pdcode.Contains(fdr("attach_pcode"))   Then
                        If state >1 Then
                            Dim xdr As DataRow=DataTables("C_PYH_WORK_Process").SQLFind("WORK_id =\'"& fileid &"\' and dept_id= \'"& dr("enterprise_id") &"\' And WORK_STATUS=\'完成\' and IS_ACTIVE=\'1\'  ")
                            If xdr Is Nothing Then
                                Functions.AsyncExecute("TemplateMessage_send_File",dr("WCHAT_ID"),fileid,s4,urls)
                            End If
                        Else
                            Functions.AsyncExecute("TemplateMessage_send_File",dr("WCHAT_ID"),fileid,s4,urls)
                            
                        End If
                    End If
                End If
            Next
            pdr("state")=0
            Functions.AsyncExecute("TemplateMessage_send_File","otmQFs6MaQBpfCrkihqi_XMw4V4s",fileid,s4,urls)
        Else
            pdr("state")=-1
        End If
        pdr("sendTime")=now
        pdr.save()
    Loop
End If


[此贴子已经被作者于2018/8/18 9:41:24编辑过]

--  作者:浙江仔
--  发布时间:2018/8/18 9:44:00
--  
分项目单独执行计划管理倒是比较方便的解决问题的办法,就是维护起来稍显麻烦

或是计划管理也做成函数,然后异步调用?

--  作者:有点蓝
--  发布时间:2018/8/18 10:03:00
--  
对的,全部代码都丢到一个异步函数里好了
--  作者:浙江仔
--  发布时间:2018/8/18 10:07:00
--  
那我SQLFind和SQLselect需要改成SQLCommand吗?