We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Can not download p6tyohj.tgz

when I run this command shown at https://parl.ai/#getstarted:

> python examples/eval_model.py -m ir_baseline -t "#moviedd-reddit" -dt valid

It can correctly downloads moviedialog.tar.gz, but can't downlad p6tyohj.tgz.
as following: 
```
[ downloading: http://parl.ai/downloads/moviedialog/moviedialog.tar.gz to path/ParlAI/data/MovieDialog/moviedialog.tar.gz ]
Downloading moviedialog.tar.gz: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 224M/224M [00:23<00:00, 9.33MB/s]
[ Checksum Successful ]
unpacking moviedialog.tar.gz
[ downloading: http://tinyurl.com/p6tyohj to path/ParlAI/data/MovieDialog/movie_dialog_dataset/task4_reddit/p6tyohj.tgz ]
Connection error, retrying. (4 retries left)
Connection error, retrying. (3 retries left)
Connection error, retrying. (2 retries left)
Connection error, retrying. (1 retries left)
Connection error, retrying. (0 retries left)
Retried too many times, stopped retrying.
Traceback (most recent call last):
  File "path/ParlAI/parlai/core/worlds.py", line 1116, in _create_task_agents
    task_agents = my_module.create_agents(opt, task)
AttributeError: module 'parlai.tasks.moviedialog.agents' has no attribute 'create_agents'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "examples/eval_model.py", line 17, in <module>
    eval_model(opt, print_parser=parser)
  File "path/ParlAI/parlai/scripts/eval_model.py", line 117, in eval_model
    task_report = _eval_single_world(opt, agent, task)
  File "path/ParlAI/parlai/scripts/eval_model.py", line 69, in _eval_single_world
    world = create_task(task_opt, agent)  # create worlds for tasks
  File "path/ParlAI/parlai/core/worlds.py", line 1221, in create_task
    world = create_task_world(opt, user_agents, default_world=default_world)
  File "path/ParlAI/parlai/core/worlds.py", line 1178, in create_task_world
    opt, user_agents, default_world=default_world
  File "path/ParlAI/parlai/core/worlds.py", line 1126, in _get_task_world
    task_agents = _create_task_agents(opt)
  File "path/ParlAI/parlai/core/worlds.py", line 1119, in _create_task_agents
    return create_task_agent_from_taskname(opt)
  File "path/ParlAI/parlai/core/agents.py", line 837, in create_task_agent_from_taskname
    task_agents = teacher_class(opt)
  File "path/ParlAI/parlai/tasks/moviedialog/agents.py", line 88, in __init__
    opt['datafile'], opt['cands_datafile'] = _path(self.task, opt)
  File "path/ParlAI/parlai/tasks/moviedialog/agents.py", line 36, in _path
    build(opt)
  File "path/ParlAI/parlai/tasks/moviedialog/build.py", line 43, in build
    RESOURCES[1].download_file(dpath2)
  File "path/ParlAI/parlai/core/build_data.py", line 81, in download_file
    download(self.url, dpath, self.file_name)
  File "path/ParlAI/parlai/core/build_data.py", line 216, in download
    raise RuntimeWarning('Connection broken too many times. Stopped retrying.')
RuntimeWarning: Connection broken too many times. Stopped retrying.
Downloading p6tyohj.tgz: 0.00B [00:31, ?B/s]
```

`
RESOURCES = [
    DownloadableFile(
        'http://parl.ai/downloads/moviedialog/moviedialog.tar.gz',
        'moviedialog.tar.gz',
        '9b168d30111f13b9cc50e6a15885adae8f86bc0bb7a124d435c43fd0f7e2a9c7',
    ),
    DownloadableFile(
        'http://tinyurl.com/p6tyohj',  # maybe this URL is wrong.
        'p6tyohj.tgz',
        '6316a6a5c563bc3c133a4a1e611d8ca638c61582f331c500697d9090efd215bb',
    ),
]
`



--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `parlai/tasks/moviedialog/build.py`
Content:
```
1 #!/usr/bin/env python3
2 
3 # Copyright (c) Facebook, Inc. and its affiliates.
4 # This source code is licensed under the MIT license found in the
5 # LICENSE file in the root directory of this source tree.
6 # Download and build the data if it does not exist.
7 
8 import parlai.core.build_data as build_data
9 import os
10 from parlai.core.build_data import DownloadableFile
11 
12 RESOURCES = [
13     DownloadableFile(
14         'http://parl.ai/downloads/moviedialog/moviedialog.tar.gz',
15         'moviedialog.tar.gz',
16         '9b168d30111f13b9cc50e6a15885adae8f86bc0bb7a124d435c43fd0f7e2a9c7',
17     ),
18     DownloadableFile(
19         'http://tinyurl.com/p6tyohj',
20         'p6tyohj.tgz',
21         '6316a6a5c563bc3c133a4a1e611d8ca638c61582f331c500697d9090efd215bb',
22     ),
23 ]
24 
25 
26 def build(opt):
27     dpath = os.path.join(opt['datapath'], 'MovieDialog')
28     version = '3'
29 
30     if not build_data.built(dpath, version_string=version):
31         print('[building data: ' + dpath + ']')
32         if build_data.built(dpath):
33             # An older version exists, so remove these outdated files.
34             build_data.remove_dir(dpath)
35         build_data.make_dir(dpath)
36 
37         # Download the data.
38         RESOURCES[0].download_file(dpath)
39 
40         dpath2 = os.path.join(dpath, 'movie_dialog_dataset', 'task4_reddit')
41         build_data.make_dir(dpath2)
42 
43         RESOURCES[1].download_file(dpath2)
44 
45         # remove pipes from task 4 labels, only one label per example
46         for root, _subfolder, files in os.walk(os.path.join(dpath2, 'task4_reddit')):
47             for f in files:
48                 if f.endswith('txt'):
49                     read_fn = os.path.join(root, f)
50                     head = 'task4_reddit_'
51                     tail = f[len(head) :]
52                     write_fn = os.path.join(root, head + 'pipeless_' + tail)
53                     with open(read_fn) as read, open(write_fn, 'w') as write:
54                         for line in read:
55                             write.write(line.replace('|', ' __PIPE__ ') + '\n')
56 
57         # Mark the data as built.
58         build_data.mark_done(dpath, version_string=version)
59
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/parlai/tasks/moviedialog/build.py b/parlai/tasks/moviedialog/build.py
--- a/parlai/tasks/moviedialog/build.py
+++ b/parlai/tasks/moviedialog/build.py
@@ -16,8 +16,8 @@
         '9b168d30111f13b9cc50e6a15885adae8f86bc0bb7a124d435c43fd0f7e2a9c7',
     ),
     DownloadableFile(
-        'http://tinyurl.com/p6tyohj',
-        'p6tyohj.tgz',
+        'http://cs.nyu.edu/~xiang/task4_reddit.tgz',
+        'task4_reddit.tgz',
         '6316a6a5c563bc3c133a4a1e611d8ca638c61582f331c500697d9090efd215bb',
     ),
 ]
@@ -25,7 +25,8 @@
 
 def build(opt):
     dpath = os.path.join(opt['datapath'], 'MovieDialog')
-    version = '3'
+    # 2019-12-11 bump version with changed url
+    version = '3.01'
 
     if not build_data.built(dpath, version_string=version):
         print('[building data: ' + dpath + ']')

{"golden_diff": "diff --git a/parlai/tasks/moviedialog/build.py b/parlai/tasks/moviedialog/build.py\n--- a/parlai/tasks/moviedialog/build.py\n+++ b/parlai/tasks/moviedialog/build.py\n@@ -16,8 +16,8 @@\n         '9b168d30111f13b9cc50e6a15885adae8f86bc0bb7a124d435c43fd0f7e2a9c7',\n     ),\n     DownloadableFile(\n-        'http://tinyurl.com/p6tyohj',\n-        'p6tyohj.tgz',\n+        'http://cs.nyu.edu/~xiang/task4_reddit.tgz',\n+        'task4_reddit.tgz',\n         '6316a6a5c563bc3c133a4a1e611d8ca638c61582f331c500697d9090efd215bb',\n     ),\n ]\n@@ -25,7 +25,8 @@\n \n def build(opt):\n     dpath = os.path.join(opt['datapath'], 'MovieDialog')\n-    version = '3'\n+    # 2019-12-11 bump version with changed url\n+    version = '3.01'\n \n     if not build_data.built(dpath, version_string=version):\n         print('[building data: ' + dpath + ']')\n", "issue": "Can not download p6tyohj.tgz\n\r\nwhen I run this command shown at https://parl.ai/#getstarted:\r\n\r\n> python examples/eval_model.py -m ir_baseline -t \"#moviedd-reddit\" -dt valid\r\n\r\nIt can correctly downloads moviedialog.tar.gz, but can't downlad p6tyohj.tgz.\r\nas following: \r\n```\r\n[ downloading: http://parl.ai/downloads/moviedialog/moviedialog.tar.gz to path/ParlAI/data/MovieDialog/moviedialog.tar.gz ]\r\nDownloading moviedialog.tar.gz: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 224M/224M [00:23<00:00, 9.33MB/s]\r\n[ Checksum Successful ]\r\nunpacking moviedialog.tar.gz\r\n[ downloading: http://tinyurl.com/p6tyohj to path/ParlAI/data/MovieDialog/movie_dialog_dataset/task4_reddit/p6tyohj.tgz ]\r\nConnection error, retrying. (4 retries left)\r\nConnection error, retrying. (3 retries left)\r\nConnection error, retrying. (2 retries left)\r\nConnection error, retrying. (1 retries left)\r\nConnection error, retrying. (0 retries left)\r\nRetried too many times, stopped retrying.\r\nTraceback (most recent call last):\r\n  File \"path/ParlAI/parlai/core/worlds.py\", line 1116, in _create_task_agents\r\n    task_agents = my_module.create_agents(opt, task)\r\nAttributeError: module 'parlai.tasks.moviedialog.agents' has no attribute 'create_agents'\r\n\r\nDuring handling of the above exception, another exception occurred:\r\n\r\nTraceback (most recent call last):\r\n  File \"examples/eval_model.py\", line 17, in <module>\r\n    eval_model(opt, print_parser=parser)\r\n  File \"path/ParlAI/parlai/scripts/eval_model.py\", line 117, in eval_model\r\n    task_report = _eval_single_world(opt, agent, task)\r\n  File \"path/ParlAI/parlai/scripts/eval_model.py\", line 69, in _eval_single_world\r\n    world = create_task(task_opt, agent)  # create worlds for tasks\r\n  File \"path/ParlAI/parlai/core/worlds.py\", line 1221, in create_task\r\n    world = create_task_world(opt, user_agents, default_world=default_world)\r\n  File \"path/ParlAI/parlai/core/worlds.py\", line 1178, in create_task_world\r\n    opt, user_agents, default_world=default_world\r\n  File \"path/ParlAI/parlai/core/worlds.py\", line 1126, in _get_task_world\r\n    task_agents = _create_task_agents(opt)\r\n  File \"path/ParlAI/parlai/core/worlds.py\", line 1119, in _create_task_agents\r\n    return create_task_agent_from_taskname(opt)\r\n  File \"path/ParlAI/parlai/core/agents.py\", line 837, in create_task_agent_from_taskname\r\n    task_agents = teacher_class(opt)\r\n  File \"path/ParlAI/parlai/tasks/moviedialog/agents.py\", line 88, in __init__\r\n    opt['datafile'], opt['cands_datafile'] = _path(self.task, opt)\r\n  File \"path/ParlAI/parlai/tasks/moviedialog/agents.py\", line 36, in _path\r\n    build(opt)\r\n  File \"path/ParlAI/parlai/tasks/moviedialog/build.py\", line 43, in build\r\n    RESOURCES[1].download_file(dpath2)\r\n  File \"path/ParlAI/parlai/core/build_data.py\", line 81, in download_file\r\n    download(self.url, dpath, self.file_name)\r\n  File \"path/ParlAI/parlai/core/build_data.py\", line 216, in download\r\n    raise RuntimeWarning('Connection broken too many times. Stopped retrying.')\r\nRuntimeWarning: Connection broken too many times. Stopped retrying.\r\nDownloading p6tyohj.tgz: 0.00B [00:31, ?B/s]\r\n```\r\n\r\n`\r\nRESOURCES = [\r\n    DownloadableFile(\r\n        'http://parl.ai/downloads/moviedialog/moviedialog.tar.gz',\r\n        'moviedialog.tar.gz',\r\n        '9b168d30111f13b9cc50e6a15885adae8f86bc0bb7a124d435c43fd0f7e2a9c7',\r\n    ),\r\n    DownloadableFile(\r\n        'http://tinyurl.com/p6tyohj',  # maybe this URL is wrong.\r\n        'p6tyohj.tgz',\r\n        '6316a6a5c563bc3c133a4a1e611d8ca638c61582f331c500697d9090efd215bb',\r\n    ),\r\n]\r\n`\r\n\r\n\n", "before_files": [{"content": "#!/usr/bin/env python3\n\n# Copyright (c) Facebook, Inc. and its affiliates.\n# This source code is licensed under the MIT license found in the\n# LICENSE file in the root directory of this source tree.\n# Download and build the data if it does not exist.\n\nimport parlai.core.build_data as build_data\nimport os\nfrom parlai.core.build_data import DownloadableFile\n\nRESOURCES = [\n    DownloadableFile(\n        'http://parl.ai/downloads/moviedialog/moviedialog.tar.gz',\n        'moviedialog.tar.gz',\n        '9b168d30111f13b9cc50e6a15885adae8f86bc0bb7a124d435c43fd0f7e2a9c7',\n    ),\n    DownloadableFile(\n        'http://tinyurl.com/p6tyohj',\n        'p6tyohj.tgz',\n        '6316a6a5c563bc3c133a4a1e611d8ca638c61582f331c500697d9090efd215bb',\n    ),\n]\n\n\ndef build(opt):\n    dpath = os.path.join(opt['datapath'], 'MovieDialog')\n    version = '3'\n\n    if not build_data.built(dpath, version_string=version):\n        print('[building data: ' + dpath + ']')\n        if build_data.built(dpath):\n            # An older version exists, so remove these outdated files.\n            build_data.remove_dir(dpath)\n        build_data.make_dir(dpath)\n\n        # Download the data.\n        RESOURCES[0].download_file(dpath)\n\n        dpath2 = os.path.join(dpath, 'movie_dialog_dataset', 'task4_reddit')\n        build_data.make_dir(dpath2)\n\n        RESOURCES[1].download_file(dpath2)\n\n        # remove pipes from task 4 labels, only one label per example\n        for root, _subfolder, files in os.walk(os.path.join(dpath2, 'task4_reddit')):\n            for f in files:\n                if f.endswith('txt'):\n                    read_fn = os.path.join(root, f)\n                    head = 'task4_reddit_'\n                    tail = f[len(head) :]\n                    write_fn = os.path.join(root, head + 'pipeless_' + tail)\n                    with open(read_fn) as read, open(write_fn, 'w') as write:\n                        for line in read:\n                            write.write(line.replace('|', ' __PIPE__ ') + '\\n')\n\n        # Mark the data as built.\n        build_data.mark_done(dpath, version_string=version)\n", "path": "parlai/tasks/moviedialog/build.py"}], "after_files": [{"content": "#!/usr/bin/env python3\n\n# Copyright (c) Facebook, Inc. and its affiliates.\n# This source code is licensed under the MIT license found in the\n# LICENSE file in the root directory of this source tree.\n# Download and build the data if it does not exist.\n\nimport parlai.core.build_data as build_data\nimport os\nfrom parlai.core.build_data import DownloadableFile\n\nRESOURCES = [\n    DownloadableFile(\n        'http://parl.ai/downloads/moviedialog/moviedialog.tar.gz',\n        'moviedialog.tar.gz',\n        '9b168d30111f13b9cc50e6a15885adae8f86bc0bb7a124d435c43fd0f7e2a9c7',\n    ),\n    DownloadableFile(\n        'http://cs.nyu.edu/~xiang/task4_reddit.tgz',\n        'task4_reddit.tgz',\n        '6316a6a5c563bc3c133a4a1e611d8ca638c61582f331c500697d9090efd215bb',\n    ),\n]\n\n\ndef build(opt):\n    dpath = os.path.join(opt['datapath'], 'MovieDialog')\n    # 2019-12-11 bump version with changed url\n    version = '3.01'\n\n    if not build_data.built(dpath, version_string=version):\n        print('[building data: ' + dpath + ']')\n        if build_data.built(dpath):\n            # An older version exists, so remove these outdated files.\n            build_data.remove_dir(dpath)\n        build_data.make_dir(dpath)\n\n        # Download the data.\n        RESOURCES[0].download_file(dpath)\n\n        dpath2 = os.path.join(dpath, 'movie_dialog_dataset', 'task4_reddit')\n        build_data.make_dir(dpath2)\n\n        RESOURCES[1].download_file(dpath2)\n\n        # remove pipes from task 4 labels, only one label per example\n        for root, _subfolder, files in os.walk(os.path.join(dpath2, 'task4_reddit')):\n            for f in files:\n                if f.endswith('txt'):\n                    read_fn = os.path.join(root, f)\n                    head = 'task4_reddit_'\n                    tail = f[len(head) :]\n                    write_fn = os.path.join(root, head + 'pipeless_' + tail)\n                    with open(read_fn) as read, open(write_fn, 'w') as write:\n                        for line in read:\n                            write.write(line.replace('|', ' __PIPE__ ') + '\\n')\n\n        # Mark the data as built.\n        build_data.mark_done(dpath, version_string=version)\n", "path": "parlai/tasks/moviedialog/build.py"}]}