diff --git a/freezegun/_async.py b/freezegun/_async.py
new file mode 100644
index 0000000..a4f2e03
--- /dev/null
+++ b/freezegun/_async.py
@@ -0,0 +1,17 @@
+import functools
+
+import asyncio
+
+
+def wrap_coroutine(api, coroutine):
+    @functools.wraps(coroutine)
+    @asyncio.coroutine
+    def wrapper(*args, **kwargs):
+        with api as time_factory:
+            if api.as_arg:
+                result = yield from coroutine(time_factory, *args, **kwargs)
+            else:
+                result = yield from coroutine(*args, **kwargs)
+        return result
+
+    return wrapper
diff --git a/freezegun/api.py b/freezegun/api.py
index c642635..7c3585e 100644
--- a/freezegun/api.py
+++ b/freezegun/api.py
@@ -36,6 +36,15 @@ try:
 except ImportError:
     import copyreg
 
+try:
+    iscoroutinefunction = inspect.iscoroutinefunction
+    from freezegun._async import wrap_coroutine
+except AttributeError:
+    iscoroutinefunction = lambda x: False
+
+    def wrap_coroutine(*args):
+        raise NotImplementedError()
+
 
 # Stolen from six
 def with_metaclass(meta, *bases):
@@ -318,6 +327,8 @@ class _freeze_time(object):
     def __call__(self, func):
         if inspect.isclass(func):
             return self.decorate_class(func)
+        elif iscoroutinefunction(func):
+            return self.decorate_coroutine(func)
         return self.decorate_callable(func)
 
     def decorate_class(self, klass):
@@ -495,6 +506,9 @@ class _freeze_time(object):
         uuid._uuid_generate_time = real_uuid_generate_time
         uuid._UuidCreate = real_uuid_create
 
+    def decorate_coroutine(self, coroutine):
+        return wrap_coroutine(self, coroutine)
+
     def decorate_callable(self, func):
         def wrapper(*args, **kwargs):
             with self as time_factory:

Mark notation does not work when using pytest-asyncio library
Simple test case fails when using both libraries and the mark notation:

```
from freezegun import freeze_time
import datetime
import asyncio
import pytest
import pytest_asyncio

@freeze_time("2012-01-14")
async def test():
    assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)  # passes

@pytest.mark.asyncio
@freeze_time("2012-01-14")
async def test_async():
    assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)  # fails
```

If we use a different notation then it works as expected:

```
from freezegun import freeze_time
import datetime
import asyncio
import pytest
import pytest_asyncio

@freeze_time("2012-01-14")
async def test():
    assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)  # passes

@pytest.mark.asyncio
async def test_async():
    with freeze_time("2012-01-14"):
        assert datetime.datetime.now() == datetime.datetime(2012, 1, 14) # passes
```

Dependencies using Python 3:
```
freezegun==0.3.8
pytest==3.0.7
pytest-asyncio==0.5.0
```

diff --git a/tests/test_asyncio.py b/tests/test_asyncio.py
new file mode 100644
index 0000000..3be1ebf
--- /dev/null
+++ b/tests/test_asyncio.py
@@ -0,0 +1,36 @@
+import datetime
+from textwrap import dedent
+
+from nose.plugins import skip
+
+from freezegun import freeze_time
+
+try:
+    import asyncio
+except ImportError:
+    asyncio = False
+
+
+def test_time_freeze_coroutine():
+    if not asyncio:
+        raise skip.SkipTest('asyncio required')
+    @asyncio.coroutine
+    @freeze_time('1970-01-01')
+    def frozen_coroutine():
+        assert datetime.date.today() == datetime.date(1970, 1, 1)
+
+    asyncio.get_event_loop().run_until_complete(frozen_coroutine())
+
+
+def test_time_freeze_async_def():
+    try:
+        exec('async def foo(): pass')
+    except SyntaxError:
+        raise skip.SkipTest('async def not supported')
+    else:
+        exec(dedent('''
+        @freeze_time('1970-01-01')
+        async def frozen_coroutine():
+            assert datetime.date.today() == datetime.date(1970, 1, 1)
+        asyncio.get_event_loop().run_until_complete(frozen_coroutine())
+        '''))

pip install -e .
parse_log_pytest
requirements.txt
nose pytest
apt-get update apt-get install -y gcc
3.6
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
charset-normalizer==2.0.12
coverage==3.7.1
coveralls==1.11.1
docopt==0.6.2
-e git+https://github.com/spulec/freezegun.git@7ad16a5579b28fc939a69cc04f0e99ba5e87b206#egg=freezegun
idna==3.10
importlib-metadata==4.8.3
iniconfig==1.1.1
mock==5.2.0
nose==1.3.7
packaging==21.3
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
python-dateutil==2.9.0.post0
requests==2.27.1
six==1.17.0
tomli==1.2.3
typing_extensions==4.1.1
urllib3==1.26.20
zipp==3.6.0

name: freezegun
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - charset-normalizer==2.0.12
      - coverage==3.7.1
      - coveralls==1.11.1
      - docopt==0.6.2
      - idna==3.10
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - mock==5.2.0
      - nose==1.3.7
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - python-dateutil==2.9.0.post0
      - requests==2.27.1
      - six==1.17.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - zipp==3.6.0
prefix: /opt/conda/envs/freezegun

tests/test_asyncio.py::test_time_freeze_async_def
tests/test_asyncio.py::test_time_freeze_coroutine
freezegun/_async.py freezegun/api.py
freezegun/_async.py freezegun/api.py