<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def check_custom_concurrency(default, forced, logger=None):
 """ Get the proper concurrency value according to the default one and the one specified by the crawler. :param int default: default tasks concurrency :param forced: concurrency asked by crawler :return: concurrency to use. :rtype: int """

    logger = logger or LOGGER
    cmc_msg = 'Invalid "max_concurrent_tasks: '
    if not isinstance(forced, int):
        logger.warn(cmc_msg + 'expecting int')
    elif forced > default:
        msg = 'may not be greater than: %s' % default
        logger.warn(cmc_msg + msg)
    elif forced < 1:
        msg = 'may not be less than 1'
        logger.warn(cmc_msg + msg)
    else:
        default = forced
    return default