【问题标题】:Looping over the records to get the data and push to api循环遍历记录以获取数据并推送到 api
【发布时间】:2022-01-15 05:13:13
【问题描述】:

我正在使用以下代码,该代码有效,但问题是针对 20000 条记录,循环花费了太多时间并超时。

所以基本上是这样的

<cfset x = new myapi()>
<cfparam name='length' default="0">
<cfparam name='start' default="5000">
<cfset iQEmpty = false>
<cfloop condition="true">
    <cfquery name="rs">
    select * from mytable limit #start#,#length#
    </cfquery>
    <cfset start += rs.recordCount>
    <cfset myst = queryToJson(rs)>
    <cfset call = x.UpsertData(myst)>
    <cfif rs.recordCount NEQ 1000>
        <cfbreak>
    </cfif>
</cfloop>

不能使用最新的coldfusion,因为我仍然卡在cf11上并且upsert期望发送一个json数据

【问题讨论】:

  • 您是否尝试将queryToJson(rs) 保存到数组中并在该数组的单独循环中调用&lt;cfset call = x.UpsertData(myst)&gt;
  • UpsertData() 实际上是做什么的?它是否将数据保存到另一个表中?
  • UpSertData 被调用到 api,它将数据推送到 api 以进行上传和插入上传
  • 这可以仅使用数据库来完成吗?如果我们谈论多个数据库,有办法让它们互相交谈。

标签: coldfusion coldfusion-11 lucee


【解决方案1】:

UpSertData 调用 api,它将数据推送到 api 以进行上传和插入 @rrk 你能解释一下把它分开是什么意思吗?这有什么帮助?,它已经在批量上传了

如果“更新插入”发生在同一个数据库中,那么直接在数据库上运行查询以从一个表中读取数据并更新另一个表的速度会无限快。

SQL update from one Table to another based on a ID match

来自该答案的示例:

UPDATE
    Sales_Import
SET
    Sales_Import.AccountNumber = RAN.AccountNumber
FROM
    Sales_Import SI
INNER JOIN
    RetrieveAccountNumber RAN
ON 
    SI.LeadID = RAN.LeadID;

如果数据来自您的系统并被发送到另一个系统的 API,则最好一次通过一条记录发送该数据,或者一次发送更少的记录。您可以在 CF Admin 中创建一个计划任务,每分钟左右对您的脚本执行一次 ping 操作,一次发送的数据量要少得多。这将需要更多请求,但可能会比尝试一次推送大量数据更及时地完成。

例如,我有一个产品一次向我发送超过 1 万条记录。它经常会超时,无法同步数据。该产品已经向微服务发送单个记录更新,因此我们更新了我的产品以订阅相同的微服务。我会获得单独的记录更新,但我的系统(基于 CF)可以快速且无故障地处理 10k 个请求,而不是尝试处理(并且通常无法处理)一个大型请求。

【讨论】:

  • 我在一个循环中发送 500
  • 要我发送 10 条记录,但如果是 10 条,那么循环将运行我不知道插入 15000 条记录多少次,它肯定会超时
  • 您需要跟踪已发送的记录。另外,上面的问题呢?是“......“更新插入”......发生在同一个数据库中”?
【解决方案2】:

如果您不关心脚本运行多长时间而只想避免超时,您可以通过&lt;cfsetting&gt; 增加时间限制。例如。您可以通过编写以下代码将超时设置为 10 分钟:

<cfsetting requesttimeout="600">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-21
    • 2021-09-27
    • 2020-09-11
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多