相关疑难解决方法(0)

"ResourceClosedError:交易已关闭",芹菜节拍和sqlalchemy +金字塔应用程序错误

我有一个金字塔应用程序叫mainsite.

该站点以非常异步的方式工作,主要是通过从视图启动的线程来执行后端操作.

它使用sqlalchemy连接到mysql,并使用ZopeTransactionExtension进行会话管理.

到目前为止,应用程序运行良好.

我需要在其上运行定期作业,它需要使用从视图中启动的一些相同的异步函数.

我使用了apscheduler,但遇到了问题.所以我想把celery beat作为一个单独的过程,将mainapp视为一个库并导入要使用的函数.

我的芹菜配置看起来像这样:

from datetime import timedelta
from api.apiconst import RERUN_CHECK_INTERVAL, AUTOMATION_CHECK_INTERVAL, \
    AUTH_DELETE_TIME

BROKER_URL = 'sqla+mysql://em:em@localhost/edgem'
CELERY_RESULT_BACKEND = "database"
CELERY_RESULT_DBURI = 'mysql://em:em@localhost/edgem'

CELERYBEAT_SCHEDULE = {
    'rerun': {
        'task': 'tasks.rerun_scheduler',
        'schedule': timedelta(seconds=RERUN_CHECK_INTERVAL)
    },
    'automate': {
        'task': 'tasks.automation_scheduler',
        'schedule': timedelta(seconds=20)
    },
    'remove-tokens': {
        'task': 'tasks.token_remover_scheduler',
        'schedule': timedelta(seconds=2 * 24 * 3600 )
    },
}

CELERY_TIMEZONE = 'UTC'
Run Code Online (Sandbox Code Playgroud)

tasks.py是

from celery import Celery
celery = Celery('tasks')
celery.config_from_object('celeryconfig')


@celery.task
def rerun_scheduler():
    from mainsite.task import check_update_rerun_tasks
    check_update_rerun_tasks() …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy celery pyramid

2
推荐指数
1
解决办法
2509
查看次数

标签 统计

celery ×1

pyramid ×1

sqlalchemy ×1