# Duplicate Flow and Replay

**URL:** <https://discourse.mitmproxy.org/t/duplicate-flow-and-replay/322>\
**Category:** help\
**Created:** [January 27, 2017, 1:23am UTC](https://discourse.mitmproxy.org/t/duplicate-flow-and-replay/322 "2017-01-27T01:23:40Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![paskyorg](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mitmproxy.org/paskyorg/32/61_2.png) [@paskyorg](https://discourse.mitmproxy.org/u/paskyorg)\
**Post date:** [January 27, 2017, 1:23am UTC](https://discourse.mitmproxy.org/t/duplicate-flow-and-replay/322/1 "2017-01-27T01:23:40Z")

</div>

Hi!

My old script with mitmproxy 0.15 was works great, but when I switched to 1.0.2 version, duplicate and replay not works as I expected and I don’t know how fix it.

```
def makeDictAndRequest(data):
   list = foo(data)
   for item in list:
      dict = createDict(item)
      makeRequest(dict)
      time.sleep(3)

makeRequest(dict):
    global allData
    nf = allData['flow'].copy() #Previos flow saved on allData global variable
    newFlow = changeFlowRequest(nf, dict)
    ctx.master.replay_request(newFlow)

```

The behaviour I want is make a new request per every item in list and every request is paused three seconds before the next request, but I get all requests without pause and without order.

How can I get pause between requests and in the same order in list.

---

<div class="post-metadata">

**Author:** ![paskyorg](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mitmproxy.org/paskyorg/32/61_2.png) [@paskyorg](https://discourse.mitmproxy.org/u/paskyorg)\
**Post date:** [January 29, 2017, 7:50pm UTC](https://discourse.mitmproxy.org/t/duplicate-flow-and-replay/322/2 "2017-01-29T19:50:51Z")

</div>

Another question is how can I create a new thread with a replay request?

---

<div class="post-metadata">

**Author:** ![ppsun](https://avatars.discourse-cdn.com/v4/letter/p/a3d4f5/32.png) [@ppsun](https://discourse.mitmproxy.org/u/ppsun)\
**Post date:** [February 28, 2017, 9:27pm UTC](https://discourse.mitmproxy.org/t/duplicate-flow-and-replay/322/3 "2017-02-28T21:27:54Z")

</div>

Hi, @paskyorg, did you have any luck in replaying the request? Actually, there is this dup\_and\_replay script in the mitmproxy repository. I tested that script but “ctx.master.replay\_request” keeps sending http request without pause.  
Do you know how to send the request exactly once?

---

<div class="post-metadata">

**Author:** ![paskyorg](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mitmproxy.org/paskyorg/32/61_2.png) [@paskyorg](https://discourse.mitmproxy.org/u/paskyorg)\
**Post date:** [March 5, 2017, 12:22am UTC](https://discourse.mitmproxy.org/t/duplicate-flow-and-replay/322/4 "2017-03-05T00:22:15Z")

</div>

When you play this script, replay\_request makes a new call to request function. It’s recursive.

Put a condition to break this behaviour or do replay\_request in response function, instead request.

---

<div class="post-metadata">

**Author:** ![ujjwal96](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mitmproxy.org/ujjwal96/32/111_2.png) [@ujjwal96](https://discourse.mitmproxy.org/u/ujjwal96)\
**Post date:** [March 5, 2017, 3:44pm UTC](https://discourse.mitmproxy.org/t/duplicate-flow-and-replay/322/5 "2017-03-05T15:44:14Z")

</div>

@ppsun You can do this:

````auto
   ctx.master.replay_request() ```
````

---

<div class="post-metadata">

**Author:** ![ppsun](https://avatars.discourse-cdn.com/v4/letter/p/a3d4f5/32.png) [@ppsun](https://discourse.mitmproxy.org/u/ppsun)\
**Post date:** [March 17, 2017, 7:27pm UTC](https://discourse.mitmproxy.org/t/duplicate-flow-and-replay/322/6 "2017-03-17T19:27:55Z")

</div>

Thanks for the advice!

---

<div class="post-metadata">

**Author:** ![ppsun](https://avatars.discourse-cdn.com/v4/letter/p/a3d4f5/32.png) [@ppsun](https://discourse.mitmproxy.org/u/ppsun)\
**Post date:** [March 17, 2017, 7:28pm UTC](https://discourse.mitmproxy.org/t/duplicate-flow-and-replay/322/7 "2017-03-17T19:28:14Z")

</div>

Thanks. This works perfectly!
