<h2 dir="auto">Checklist</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> I have included the output of <code class="notranslate">celery -A proj report</code> in the issue.<br>
(if you are not able to do this, then at least specify the Celery<br>
version affected).</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> I have verified that the issue exists against the <code class="notranslate">master</code> branch of Celery.</li>
</ul>
<h2 dir="auto">Steps to reproduce</h2>
<ol dir="auto">
<li>Run celery with a single worker set to use the solo pool such as <code class="notranslate">celery worker -c 1 -P solo</code></li>
</ol>
<h2 dir="auto">Expected behavior</h2>
<p dir="auto">Expected that a single-process worker would exist and be able to use heartbeats.</p>
<h2 dir="auto">Actual behavior</h2>
<p dir="auto">Single-process worker exists but does not use heartbeats. All timer related tasks don't work, so this is the root cause of heartbeats not working.</p>
<p dir="auto">If this is intended behavior then it should be mentioned in the documentation as it is very much not clear.</p>
<p dir="auto">I know the documentation for solo says 'single-threaded' but I didn't take that to mean that it wouldn't handle timers correctly as well. A layman's reading of that (along with the name) implies that the worker pool has a single thread and that's it (so one worker), not that the process itself can't have any threads to facilitate things like timers.</p>
<p dir="auto">Hi,</p>
<p dir="auto">We are using celery with tasks that may take up a lot of time (hours or even days). The problem is that after a couple of hours task is sent back to the queue and run from another worker (or the same one after it finishes).</p>
<p dir="auto">Looks like the task is not acknowledged and after that 2h limit it is readded (by rabbit?).  If that is the problem, is there a way to acknowledge them in the begining of the task or disable this behaviour?</p>
<p dir="auto">We are using celery 4.0.0 and RabbitMQ 3.6.3 with the following celery config:</p>
<p dir="auto">CELERY_ACCEPT_CONTENT = ['pickle', 'json']<br>
CELERY_TASK_SERIALIZER = 'json'<br>
CELERY_ENABLE_UTC = True<br>
CELERY_TIMEZONE = 'Etc/UTC'<br>
CELERY_DISABLE_RATE_LIMITS = True<br>
CELERY_IGNORE_RESULT = True<br>
CELERYD_PREFETCH_MULTIPLIER = 1<br>
CELERY_SEND_EVENTS = False</p>
<p dir="auto">Thanks</p>