簡體   English   中英

芹菜任務與http請求一起掛起

[英]Celery task is hanging with http request

我正在測試芹菜任務,並偶然發現了問題。 如果任務中存在帶有請求的代碼(通過urllib.urlopen),則該代碼將掛起。 可能是什么原因?

我只是嘗試從Flask的最小配置開始。 我將rabbitmq和redis用於代理和后端,但是結果是相同的。

帶有任務的文件(run_celery.py):

...import celery and flask app...

celery = Celery(
    app.import_name,
    backend=app.config['CELERY_BROKER_URL'],
    broker=app.config['CELERY_BROKER_URL']
)

@celery.task
def test_task(a):
    print(a)
    print(requests.get('http://google.com'))

這樣,我啟動了worker:celery -A run_celery.celery worker -l debug

之后,我運行ipython並調用task。

from run_celery import test_task
test_task.apply_async(('sfas',))

工人開始執行的任務:

...
Received task: run_celery.test_task...
sfas
Starting new HTTP connection (1)...

然后掛起。

僅當任務包含請求時,此行為才是實際的。 我做錯了什么?

我在代碼中找到了原因,非常想知道O_o。 我不知道為什么會這樣,但是在帶有任務的文件中,存在導入模型,當執行時,然后執行初始化實例MagentoAPI( https://github.com/bernieke/python-magento )。 如果我注釋掉此初始化,則芹菜任務中的請求將正確執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM